View a markdown version of this page

Menggunakan AWS Penyedia Kredensia Beban Kerja - AWS Secrets Manager

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menggunakan AWS Penyedia Kredensia Beban Kerja

Bagaimana AWS Penyedia KredenSIAL Beban Kerja berfungsi

Penyedia AWS Kredensi Beban Kerja (sebelumnya AWS Secrets Manager Agen) menyediakan layanan HTTP sisi klien yang membantu Anda menstandarkan cara Anda menggunakan rahasia dari Secrets Manager di seluruh lingkungan komputasi Anda. Anda dapat menggunakannya dengan layanan berikut:

  • AWS Lambda

  • Amazon Elastic Container Service

  • Layanan Amazon Elastic Kubernetes

  • Amazon Elastic Compute Cloud

Penye AWS dia KredenSIAL Beban Kerja mengambil dan menyimpan rahasia dalam memori, memungkinkan aplikasi Anda mendapatkan rahasia dari localhost alih-alih melakukan panggilan langsung ke Manajer Rahasia. Penyedia AWS Kredensi Beban Kerja hanya dapat membaca rahasia—tidak dapat memodifikasinya.

Penyedia AWS Kredensi Beban Kerja adalah sumber terbuka. Kode sumber, petunjuk instalasi, dan informasi rilis terbaru tersedia di GitHub.

penting

Penyedia AWS KredenSIAL Beban Kerja menggunakan AWS kredenSIAL dari lingkungan Anda untuk memanggil Manajer Rahasia. Ini termasuk perlindungan terhadap Pemalsuan Permintaan Sisi Server (SSRF) untuk membantu meningkatkan keamanan rahasia. Penyedia AWS Kredensi Beban Kerja menggunakan pertukaran ML-KEM kunci pasca-kuantum sebagai pertukaran kunci prioritas tertinggi secara default.

Memahami AWS Caching Penyedia KredenSIAL Beban Kerja

Penyedia AWS Kredensi Beban Kerja menggunakan cache dalam memori yang disetel ulang saat Penyedia Kredensi Beban AWS Kerja dimulai ulang. Ini secara berkala menyegarkan nilai-nilai rahasia yang di-cache berdasarkan hal berikut:

  • Frekuensi refresh default (TTL) adalah 300 detik

  • Anda dapat memodifikasi TTL menggunakan file konfigurasi

  • Refresh terjadi saat Anda meminta rahasia setelah TTL kedaluwarsa

catatan

Penyedia AWS Kredensi Beban Kerja tidak menyertakan pembatalan cache. Jika rahasia berputar sebelum entri cache berakhir, Penyedia Kre AWS densi Beban Kerja mungkin mengembalikan nilai rahasia basi.

Penye AWS dia KredenSIAL Beban Kerja mengembalikan nilai rahasia dalam format yang sama dengan responsGetSecretValue. Nilai rahasia tidak dienkripsi dalam cache.

Unduh AWS Penyedia Kredensia Beban Kerja

Untuk mengunduh biner bawaan dari Penyedia Kreden AWS sifikasi Beban Kerja, gunakan tautan berikut. Rilis untuk Windows ditandatangani.

Platform Arsitektur Unduh URL Checksum () SHA-256

Linux

x86-64

Unduh untuk Linux x86-64 (3.1.1)

471c1978f8bf63a0aeefb425e974ac3c816c7e04feb302236512eea375160de4

Linux

AArch64

Unduh untuk Linux AArch64 (3.1.1)

8b09dc4e58b84379f580a9ae179940bcb3de0338421f638a43376bf73380ffb6

Windows

x86-64

Unduh untuk Windows x86-64 (3.1.1)

5fbdac4017e630556b94b90e5ed9ed11be69ac7a47e67655e20181ce990dbe12

Bangun AWS Penyedia KredenSIAL Beban Kerja dari sumber

Atau, Anda dapat membangun Penyedia Kreden AWS SIAL Beban Kerja dari sumber. Sebelum Anda mulai, pastikan Anda memiliki alat dan Rust alat pengembangan standar yang diinstal untuk platform Anda.

catatan

Membangun penyedia dengan fips fitur yang diaktifkan di macOS saat ini memerlukan solusi berikut:

  • Buat variabel lingkungan SDKROOT yang disebut yang disetel ke hasil berjalan xcrun --show-sdk-path

RPM-based systems
Untuk membangun RPM-based sistem
  1. Gunakan install skrip yang disediakan di repositori.

    Skrip menghasilkan token SSRF acak saat startup dan menyimpannya dalam file/var/run/awssmatoken. Token dapat dibaca oleh aws-wcp-token grup yang dibuat skrip instalasi.

  2. Untuk mengizinkan aplikasi Anda membaca file token, Anda perlu menambahkan akun pengguna yang dijalankan aplikasi Anda ke aws-wcp-token grup. Misalnya, Anda dapat memberikan izin bagi aplikasi Anda untuk membaca file token dengan perintah usermod berikut, di <APP_USER> mana ID pengguna tempat aplikasi Anda berjalan.

    sudo usermod -aG aws-wcp-token <APP_USER>
    Instal alat pengembangan

    Pada RPM-based sistem seperti AL2023, instal grup Alat Pengembangan:

    sudo yum -y groupinstall "Development Tools"
  3. Instal Rust

    Ikuti petunjuk di Instal Rust di dokumentasi Rust:

    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh # Follow the on-screen instructions . "$HOME/.cargo/env"
  4. Bangun penyedia

    Bangun Penye AWS dia KredenSIAL Beban Kerja menggunakan perintah pembuatan kargo:

    cargo build --release

    Anda akan menemukan yang dapat dieksekusi di bawahtarget/release/aws-workload-credentials-provider.

Debian-based systems
Untuk membangun Debian-based sistem
  1. Instal alat pengembangan

    Pada Debian-based sistem seperti Ubuntu, instal paket build-essential:

    sudo apt install build-essential
  2. Instal Rust

    Ikuti petunjuk di Instal Rust di dokumentasi Rust:

    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh # Follow the on-screen instructions . "$HOME/.cargo/env"
  3. Bangun penyedia

    Bangun Penye AWS dia KredenSIAL Beban Kerja menggunakan perintah pembuatan kargo:

    cargo build --release

    Anda akan menemukan yang dapat dieksekusi di bawahtarget/release/aws-workload-credentials-provider.

Windows
Untuk membangun di Windows
  1. Menyiapkan lingkungan pengembangan

    Ikuti petunjuk di Meng atur lingkungan pengembang Anda di Windows untuk Rust di dokumentasi Microsoft Windows.

  2. Bangun penyedia

    Bangun Penye AWS dia KredenSIAL Beban Kerja menggunakan perintah pembuatan kargo:

    cargo build --release

    Anda akan menemukan yang dapat dieksekusi di bawahtarget/release/aws-workload-credentials-provider.exe.

Cross-compile natively
Untuk mengkompilasi silang secara asli
  1. Instal alat kompilasi silang

    Instal cargo-xwin:

    cargo install cargo-xwin
  2. Tambahkan target build Rust

    Instal target build Windows MSVC:

    rustup target add x86_64-pc-windows-msvc
  3. Bangun untuk Windows

    Cross-compile penyedia untuk Windows:

    cargo xwin build --release --target x86_64-pc-windows-msvc

    Anda akan menemukan yang dapat dieksekusi ditarget/x86_64-pc-windows-msvc/release/aws-workload-credentials-provider.exe.

Instal AWS Penyedia Kredensia Beban Kerja

Pilih lingkungan komputasi Anda dari opsi instalasi berikut.

Amazon EC2

Pada Linux instans Amazon EC2, Anda dapat menginstal Penyedia Kreden AWS sifikasi Beban Kerja menggunakan paket RPM (tersedia untuk AL2023) atau skrip penginstalan manual.

Opsi A: Instal paket RPM (AL2023)
  1. Instal paket

    Instal paket RPM. Manajer paket menemukan versi terbaru untuk Anda:

    sudo dnf install aws-workload-credentials-provider

    Paket RPM secara otomatis mengatur hal berikut:

    • Pengguna aws-wcp layanan, bersama dengan aws-wcp-token kelompok awscreds dan.

    • Skrip biner dan pembantu di/opt/aws/workload-credentials-provider/.

    • Layanan AWS Secrets Manager dan tokensystemd, yang dimulai secara otomatis.

    • Token SSRF acak di/var/run/awssmatoken.

    Kemampuan Secrets Manager tersedia segera setelah instalasi. Saat Anda menginstal dengan paket RPM, Penyedia Kre AWS densi Beban Kerja membaca opsi konfigurasi dari jalur default/etc/aws-workload-credentials-provider/config.toml. Untuk menyesuaikan konfigurasi, buat atau edit file itu.

  2. (Opsional) Aktifkan kemampuan Manajemen Sertifikat

    Untuk mengambil dan menyegarkan sertifikat dari AWS Certificate Manager, lihat Otomatisasi sertifikat di Panduan AWS Certificate Manager Pengguna.

  3. Konfigurasikan izin aplikasi

    Untuk mengizinkan aplikasi Anda membaca file token SSRF, tambahkan akun pengguna aplikasi ke aws-wcp-token grup:

    sudo usermod -aG aws-wcp-token APP_USER

    Ganti APP_USER dengan ID pengguna tempat aplikasi Anda berjalan.

  4. (Opsional) Berikan akses ke log penyedia

    Untuk membaca log penyedia, tambahkan pengguna Anda ke awscreds grup, lalu keluar dan masuk kembali (atau jalankannewgrp awscreds) agar perubahan diterapkan:

    sudo usermod -aG awscreds APP_USER
Copot pemasangan AWS Penyedia Kredensia Beban Kerja

Untuk menghapus Penyedia Kre AWS denSIAL Beban Kerja, jalankansudo dnf remove aws-workload-credentials-provider. Menghapus instalasi menghentikan semua layanan dan menghapus binari dan unit layanan. Proses uninstall mempertahankan aws-wcp pengguna, grup, dan direktori log.

Opsi B: Jalankan skrip instal (apa saja Linux)
  1. Arahkan ke direktori konfigurasi

    Ubah ke direktori konfigurasi:

    cd aws_workload_credentials_provider_common/configuration
  2. Jalankan skrip instalasi

    Jalankan install skrip yang disediakan di repositori.

    Skrip menghasilkan token SSRF acak saat startup dan menyimpannya dalam file/var/run/awssmatoken. Token dapat dibaca oleh aws-wcp-token grup yang dibuat skrip instalasi.

  3. Konfigurasikan izin aplikasi

    Tambahkan akun pengguna yang dijalankan aplikasi Anda ke aws-wcp-token grup:

    sudo usermod -aG aws-wcp-token APP_USER

    Ganti APP_USER dengan ID pengguna tempat aplikasi Anda berjalan.

Container Sidecar

Anda dapat menjalankan Penyedia Kreden AWS sifikasi Beban Kerja sebagai wadah sidecar di samping aplikasi Anda dengan menggunakan Docker. Kemudian aplikasi Anda dapat mengambil rahasia dari server HTTP lokal yang disediakan oleh Penyedia Kreden AWS SIAL Beban Kerja. Untuk informasi tentang Docker, lihat dokumentasi Docker.

Untuk membuat wadah sidecar untuk AWS Penyedia Kredensia Beban Kerja
  1. Buat penyedia Dockerfile

    Buat Dockerfile untuk wadah sidecar Penyedia Kreden AWS sia Beban Kerja:

    # Use the latest Debian image as the base FROM debian:latest # Set the working directory inside the container WORKDIR /app # Copy the Workload Credentials Provider binary to the container COPY aws-workload-credentials-provider . # Install any necessary dependencies RUN apt-get update && apt-get install -y ca-certificates # Set the entry point to run the provider ENTRYPOINT ["./aws-workload-credentials-provider", "sm", "start"]
  2. Buat aplikasi Dockerfile

    Buat Dockerfile untuk aplikasi klien Anda.

  3. Buat file Docker Compose

    Buat file Docker Compose untuk menjalankan kedua wadah dengan antarmuka jaringan bersama:

    penting

    Anda harus memuat AWS kredenSIAL dan token SSRF agar aplikasi dapat menggunakan Penyedia KredenSIAL Beb AWS an Kerja. Untuk Amazon EKS dan Amazon ECS, lihat berikut ini:

    version: '3' services: client-application: container_name: client-application build: context: . dockerfile: Dockerfile.client command: tail -f /dev/null # Keep the container running workload-credentials-provider: container_name: workload-credentials-provider build: context: . dockerfile: Dockerfile.provider network_mode: "container:client-application" # Attach to the client-application container's network depends_on: - client-application
  4. Salin penyedia biner

    Salin aws-workload-credentials-provider biner ke direktori yang sama yang berisi file Dockerfiles dan Docker Compose Anda.

  5. Membangun dan menjalankan kontainer

    Bangun dan jalankan wadah menggunakan Docker Compose:

    docker-compose up --build
  6. Langkah selanjutnya

    Anda sekarang dapat menggunakan Penyedia Kre AWS denSIAL Beban Kerja untuk mengambil rahasia dari wadah klien Anda. Untuk informasi selengkapnya, lihat Mengambil rahasia dengan AWS Penyedia Kredensia Beban Kerja.

Lambda

Anda dapat mengemas Penyedia Kreden AWS SIAL Beban Kerja sebagai ekstensi Lambda. Kemudian Anda dapat men ambahkannya ke fungsi Lambda Anda sebagai lapisan dan memanggil Penyedia KredenSIAL AWS Beban Kerja dari fungsi Lambda Anda untuk mendapatkan rahasia.

Petunjuk berikut menunjukkan cara mendapatkan nama rahasia MyTest dengan menggunakan skrip contoh secrets-manager-provider-extension.sh di GitHub repositori aws-workload-credentials-provider untuk menginstal Penyedia KredenSIAL Beban Kerja sebagai ekstensi Lambda. AWS

Untuk membuat ekstensi Lambda untuk AWS Penyedia Kredensia Beban Kerja
  1. Kemas lapisan penyedia

    Dari root paket kode Penyedia AWS Kredentifikasi Beban Kerja, jalankan perintah berikut:

    AWS_ACCOUNT_ID=AWS_ACCOUNT_ID LAMBDA_ARN=LAMBDA_ARN # Build the release binary cargo build --release --target=x86_64-unknown-linux-gnu # Copy the release binary into the `bin` folder mkdir -p ./bin cp ./target/x86_64-unknown-linux-gnu/release/aws-workload-credentials-provider ./bin/aws-workload-credentials-provider # Copy the `secrets-manager-provider-extension.sh` example script into the `extensions` folder. mkdir -p ./extensions cp aws_secretsmanager_provider/examples/example-lambda-extension/secrets-manager-provider-extension.sh ./extensions # Zip the extension shell script and the binary zip secrets-manager-provider-extension.zip bin/* extensions/* # Publish the layer version LAYER_VERSION_ARN=$(aws lambda publish-layer-version \ --layer-name secrets-manager-provider-extension \ --zip-file "fileb://secrets-manager-provider-extension.zip" | jq -r '.LayerVersionArn')
  2. Konfigurasikan token SSRF

    Konfigurasi default penyedia akan secara otomatis mengatur token SSRF ke nilai yang ditetapkan dalam variabel pra-set AWS_SESSION_TOKEN atau AWS_CONTAINER_AUTHORIZATION_TOKEN lingkungan (variabel terakhir untuk fungsi Lambda dengan SnapStart diaktifkan). Atau, Anda dapat menentukan variabel AWS_TOKEN lingkungan dengan nilai arbitrer untuk fungsi Lambda Anda sebagai gantinya karena variabel ini diutamakan daripada dua lainnya. Jika Anda memilih untuk menggunakan variabel AWS_TOKEN lingkungan, Anda harus mengatur variabel lingkungan itu dengan lambda:UpdateFunctionConfiguration panggilan.

  3. Pasang lapisan ke fungsi

    Lampirkan versi layer ke fungsi Lambda Anda:

    # Attach the layer version to the Lambda function aws lambda update-function-configuration \ --function-name $LAMBDA_ARN \ --layers "$LAYER_VERSION_ARN"
  4. Perbarui kode fungsi

    Perbarui fungsi Lambda Anda untuk men http://localhost:2773/secretsmanager/get?secretId=MyTest anyakan dengan nilai X-Aws-codes-Secrets-Token header yang disetel ke nilai token SSRF yang bersumber dari salah satu variabel lingkungan yang disebutkan di atas untuk mengambil rahasia. Pastikan untuk menerapkan logika coba ulang dalam kode aplikasi Anda untuk mengakomodasi penundaan inisialisasi dan pendaftaran ekstensi Lambda.

  5. Uji fungsi

    Panggil fungsi Lambda untuk memverifikasi bahwa rahasia sedang diambil dengan benar.

Mengambil rahasia dengan AWS Penyedia Kredensia Beban Kerja

Untuk mengambil rahasia, panggil titik akhir Penyedia Kre AWS dentifikasi Beban Kerja lokal dengan nama rahasia atau ARN sebagai parameter kueri. Secara default, Penyedia AWS KredenSIAL Beban Kerja AWSCURRENT mengambil versi rahasia. Untuk mengambil versi yang berbeda, gunakan parameter versionStage atau versionId.

penting

Untuk membantu melindungi Penyedia AWS Kredensi Beban Kerja, Anda harus menyertakan header token SSRF sebagai bagian dari setiap permintaan:X-Aws-Parameters-Secrets-Token. Penye AWS dia Kredensi Beban Kerja menolak permintaan yang tidak memiliki header ini atau yang memiliki token SSRF yang tidak valid. Anda dapat menyesuaikan nama header SSRF diKonfigurasikan AWS Penyedia Kredensia Beban Kerja.

Izin yang diperlukan

Penyedia AWS Kredensi Beban AWS Kerja menggunakan SDK untuk Rust, yang menggunakan rantai penyedia AWS kredensia. Identitas kredentif IAM ini menentukan izin yang dimiliki Penyedia Kreden AWS SIAL Beban Kerja untuk mengambil rahasia.

  • secretsmanager:DescribeSecret

  • secretsmanager:GetSecretValue

Untuk informasi selengkapnya tentang izin, lihat Referensi izin untuk AWS Secrets Manager.

penting

Setelah nilai rahasia ditarik ke Penyedia KredenSIAL AWS Beban Kerja, setiap pengguna dengan akses ke lingkungan komputasi dan token SSRF dapat mengakses rahasia dari cache Penyedia KredenSIAL B AWS eban Kerja. Untuk informasi selengkapnya, lihat Pertimbangan keamanan.

Contoh permintaan

curl
contoh Contoh — Dapatkan rahasia menggunakan curl

Contoh curl berikut menunjukkan cara mendapatkan rahasia dari Penyedia KredenSIAL B AWS eban Kerja. Contohnya bergantung pada SSRF yang ada dalam file, di mana ia disimpan oleh skrip instal.

curl -v -H \ "X-Aws-Parameters-Secrets-Token: $(</var/run/awssmatoken)" \ 'http://localhost:2773/secretsmanager/get?secretId=YOUR_SECRET_ID'
Python
contoh Contoh — Dapatkan rahasia menggunakan Python

Contoh Python berikut menunjukkan cara mendapatkan rahasia dari Penyedia KredenSIAL B AWS eban Kerja. Contohnya bergantung pada SSRF yang ada dalam file, di mana ia disimpan oleh skrip instal.

import requests import json # Function that fetches the secret from AWS Workload Credentials Provider for the provided secret id. def get_secret(): # Construct the URL for the GET request url = f"http://localhost:2773/secretsmanager/get?secretId=YOUR_SECRET_ID" # Get the SSRF token from the token file with open('/var/run/awssmatoken') as fp: token = fp.read() headers = { "X-Aws-Parameters-Secrets-Token": token.strip() } try: # Send the GET request with headers response = requests.get(url, headers=headers) # Check if the request was successful if response.status_code == 200: # Return the secret value return response.text else: # Handle error cases raise Exception(f"Status code {response.status_code} - {response.text}") except Exception as e: # Handle network errors raise Exception(f"Error: {e}")

Memahami parameter RefreshNow

Penyedia AWS Kredensi Beban Kerja menggunakan cache dalam memori untuk menyimpan nilai rahasia, yang disegarkan secara berkala. Secara default, penyegaran ini terjadi ketika Anda meminta rahasia setelah Time to Live (TTL) berakhir, biasanya setiap 300 detik. Namun, pendekatan ini terkadang dapat mengakibatkan nilai rahasia basi, terutama jika rahasia berputar sebelum entri cache berakhir.

Untuk mengatasi batasan ini, Penyedia Kre AWS densi Beban Kerja mendukung parameter yang di refreshNow panggil di URL. Anda dapat menggunakan parameter ini untuk memaksa penyegaran langsung nilai rahasia, melewati cache dan memastikan Anda memiliki informasi terbaru.

Perilaku default (tanparefreshNow)
  • Menggunakan nilai yang di-cache hingga TTL kedaluwarsa

  • Menyegarkan rahasia hanya setelah TTL (default 300 detik)

  • Dapat mengembalikan nilai basi jika rahasia berputar sebelum cache berakhir

Perilaku dengan refreshNow=true
  • Melewati cache sepenuhnya

  • Mengambil nilai rahasia terbaru langsung dari Secrets Manager

  • Memperbarui cache dengan nilai baru dan mengatur ulang TTL

  • Memastikan Anda selalu mendapatkan nilai rahasia terbaru

Force-refresh nilai rahasia

penting

Nilai default refreshNow adalah false. Ketika disetel ketrue, itu mengganti TTL yang ditentukan dalam file konfigurasi Penyedia Kre AWS denSIAL Beban Kerja dan membuat panggilan API ke Manajer Rahasia.

curl
contoh Contoh — Force-refresh rahasia menggunakan curl

Contoh curl berikut menunjukkan cara memaksa Penyedia KredenSIAL AWS Beban Kerja untuk menyegarkan rahasia. Contohnya bergantung pada SSRF yang ada dalam file, di mana ia disimpan oleh skrip instal.

curl -v -H \ "X-Aws-Parameters-Secrets-Token: $(</var/run/awssmatoken)" \ 'http://localhost:2773/secretsmanager/get?secretId=YOUR_SECRET_ID&refreshNow=true'
Python
contoh Contoh — Force-refresh rahasia menggunakan Python

Contoh Python berikut menunjukkan cara mendapatkan rahasia dari Penyedia KredenSIAL B AWS eban Kerja. Contohnya bergantung pada SSRF yang ada dalam file, di mana ia disimpan oleh skrip instal.

import requests import json # Function that fetches the secret from AWS Workload Credentials Provider for the provided secret id. def get_secret(): # Construct the URL for the GET request url = f"http://localhost:2773/secretsmanager/get?secretId=YOUR_SECRET_ID&refreshNow=true" # Get the SSRF token from the token file with open('/var/run/awssmatoken') as fp: token = fp.read() headers = { "X-Aws-Parameters-Secrets-Token": token.strip() } try: # Send the GET request with headers response = requests.get(url, headers=headers) # Check if the request was successful if response.status_code == 200: # Return the secret value return response.text else: # Handle error cases raise Exception(f"Status code {response.status_code} - {response.text}") except Exception as e: # Handle network errors raise Exception(f"Error: {e}")

Mengambil rahasia di seluruh akun dengan rantai peran

Rantaian peran memungkinkan Penyedia Kre AWS densi Beban Kerja untuk mengambil rahasia dari AWS akun lain dengan mengasumsikan peran IAM menggunakan. AWS STS AssumeRole Penyedia AWS Kredensi Beban Kerja membuat dan menyimpan klien caching terpisah untuk setiap peran unik ARN. Setiap klien peran mempertahankan cache independennya sendiri, sehingga rahasia yang sama diambil dengan peran yang berbeda memiliki entri cache terpisah.

Izin yang diperlukan

Untuk menggunakan rantai peran, Anda memerlukan yang berikut:

  • Kreden AWS tif lingkungan Penyedia Kredensia Beban Kerja harus memiliki sts:AssumeRole izin pada peran target ARN.

  • Peran target harus memiliki secretsmanager:GetSecretValue dan secretsmanager:DescribeSecret izin untuk rahasia yang ingin Anda akses.

  • Kebijakan kepercayaan peran target harus mengizinkan identitas Penyedia Kre AWS dentif Beban Kerja untuk mengasumsinya.

Mengambil rahasia lintas akun

Sertakan parameter roleArn kueri dalam permintaan Anda ke Penyedia Kre AWS densi Beban Kerja untuk menentukan peran mana yang akan diambil untuk pengambilan rahasia.

curl
contoh Contoh — Cross-account rahasia menggunakan curl
curl -v -H \ "X-Aws-Parameters-Secrets-Token: $(</var/run/awssmatoken)" \ 'http://localhost:2773/secretsmanager/get?secretId=YOUR_SECRET_ID&roleArn=arn:aws:iam::ACCOUNT_ID:role/ROLE_NAME'
Python
contoh Contoh — Cross-account rahasia menggunakan Python
import requests def get_secret_cross_account(): secret_id = "YOUR_SECRET_ID" role_arn = "arn:aws:iam::ACCOUNT_ID:role/ROLE_NAME" url = f"http://localhost:2773/secretsmanager/get?secretId={secret_id}&roleArn={role_arn}" with open('/var/run/awssmatoken') as fp: token = fp.read() headers = { "X-Aws-Parameters-Secrets-Token": token.strip() } try: response = requests.get(url, headers=headers) if response.status_code == 200: return response.text else: raise Exception(f"Status code {response.status_code} - {response.text}") except Exception as e: raise Exception(f"Error: {e}")

Konfigurasi dan batasan rantai peran

Konfigurasikan rantai peran dengan max_roles opsi di file konfigurasi TOML Anda. Ini menetapkan jumlah maksimum peran yang diasumsikan secara simultan, dalam kisaran 1 hingga 20. Defaultnya adalah 20.

penting

Peran yang diasumsikan tidak diusir dari cache peran Penyedia AWS Kredensi Beban Kerja. Setelah jumlah maksimum peran tercapai, permintaan dengan ARN peran baru ditolak dengan 400 kesalahan hingga Penyedia KredenSIAL Beb AWS an Kerja dimulai ulang.

Tanggapan kesalahan untuk rantai peran
400

roleArnFormat tidak valid atau jumlah maksimum peran yang diasumsikan telah tercapai.

403

Pang AWS STS AssumeRole gilan gagal. Verifikasi bahwa kebijakan kepercayaan peran target memungkinkan identitas Penyedia Kreden AWS tif Beban Kerja untuk mengasumsikannya.

Pre-fetch rahasia saat startup

Secara default, Penyedia Kre AWS densi Beban Kerja mengambil rahasia sesuai permintaan saat aplikasi Anda memintanya. Dengan pra-pengambilan, Penyedia AWS KredenSIAL Beban Kerja memuat rahasia yang ditentukan ke dalam cache saat dijalankan, sehingga aplikasi Anda dapat langsung mengaksesnya tanpa menunggu panggilan API pertama. Pre-fetching berjalan sebagai tugas latar belakang—Penyedia Kre AWS denSIAL Beban Kerja mulai menerima permintaan segera dan tidak memblokir penyelesaian pra-pengambilan.

Anda dapat menentukan rahasia untuk pra-pengambilan dengan dua cara:

  • Rahasia eksplisit — Daftar ID rahasia tertentu atau ARN.

  • Tag-based penemuan — Temukan rahasia dengan kunci tag. Penyedia AWS KredenSIAL Beban Kerja mengambil semua rahasia yang memiliki tag yang ditentukan.

Izin yang diperlukan

Selain izin standar untuk mengambil rahasia, pra-pengambilan memerlukan hal berikut:

  • secretsmanager:BatchGetSecretValue— Diperlukan untuk semua operasi pra-fetch.

  • secretsmanager:ListSecrets— Diperlukan hanya saat menggunakan penemuan berbasis tag.

Konfigurasikan pra-pengambilan

Tambahkan [capabilities.secrets_manager.prefetch] bagian ke file konfigurasi TOML Anda. Pilihan berikut tersedia:

cache_buffer_ratio

Fraksi maksimum cache untuk diisi per klien selama pra-fetch, dalam kisaran 0,1 hingga 1,0. Defaultnya adalah 0,8. Ketika batas buffer tercapai, Penyedia Kredensi B AWS eban Kerja menghentikan pra-pengambilan rahasia yang tersisa — tidak menghapus entri cache yang ada. Rahasia yang tidak dimuat selama pra-pengambilan masih tersedia sesuai permintaan.

max_jitter_seconds

Penundaan acak dalam detik sebelum pra-pengambilan dimulai, dalam kisaran 0 hingga 10. Default-nya adalah 0. Gunakan ini untuk mencegah panggilan API seluruh armada yang disinkronkan saat beberapa penyedia memulai secara bersamaan.

contoh Pre-fetch konfigurasi dengan rahasia eksplisit
[capabilities.secrets_manager.prefetch] cache_buffer_ratio = 0.6 max_jitter_seconds = 5 secrets = [ { secret_id = "arn:aws:secretsmanager:us-west-2:123456789012:secret:MySecret-AbCdEf" }, { secret_id = "MyOtherSecret" }, ]
contoh Pre-fetch konfigurasi dengan penemuan berbasis tag
[capabilities.secrets_manager.prefetch] cache_buffer_ratio = 0.8 filter_tags = [ { key = "Environment" }, { key = "Team" }, ]

Anda juga dapat menggabungkan rahasia eksplisit dan penemuan berbasis tag dalam konfigurasi yang sama. Untuk pra-pengambilan lintas akun, tambahkan bidang. role_arn Untuk informasi selengkapnya, lihat Mengambil rahasia di seluruh akun dengan rantai peran.

contoh Pre-fetch konfigurasi dengan akses lintas akun
[capabilities.secrets_manager.prefetch] cache_buffer_ratio = 0.6 max_jitter_seconds = 5 secrets = [ { secret_id = "arn:aws:secretsmanager:us-west-2:123456789012:secret:MySecret-AbCdEf" }, { secret_id = "cross-account-secret", role_arn = "arn:aws:iam::987654321098:role/SecretAccessRole" }, ] filter_tags = [ { key = "Environment" }, { key = "Team", role_arn = "arn:aws:iam::987654321098:role/SecretAccessRole" }, ]

Konfigurasikan AWS Penyedia Kredensia Beban Kerja

Untuk mengubah konfigurasi Penyedia Kreden AWS SIAL Beban Kerja, buat file konfigurasi TOML, lalu panggil./aws-workload-credentials-provider sm start --config config.toml.

File konfigurasi mendukung format bersarang. Opsi Manajer Rahasia ditempatkan di bawah[capabilities.secrets_manager], dengan sub-bagian untuk cache dan pengaturan keamanan. Opsi pencatatan ditempatkan di bawah[logging].

contoh Contoh file konfigurasi bersarang
[logging] log_level = "INFO" log_to_file = true [capabilities.secrets_manager] enabled = true http_port = 2773 region = "us-east-1" path_prefix = "/v1/" max_conn = 800 max_roles = 20 [capabilities.secrets_manager.cache] ttl_seconds = 300 cache_size = 1000 [capabilities.secrets_manager.security] ssrf_headers = ["X-Aws-Parameters-Secrets-Token", "X-Vault-Token"] ssrf_env_variables = ["AWS_TOKEN", "AWS_SESSION_TOKEN", "AWS_CONTAINER_AUTHORIZATION_TOKEN"]
catatan

Tombol datar di tingkat root (misalnya,http_port = 2773) masih didukung untuk kompatibilitas mundur dengan file konfigurasi yang ada.

Opsi konfigurasi Manajer Rahasia
enabled

Apakah kemampuan Manajer Rahasia aktif: true ataufalse. Nilai default-nya true.

http_port

Port untuk server HTTP lokal, dalam kisaran 1024 hingga 65535. Defaultnya adalah 2773.

region

Wil AWS ayah yang akan digunakan untuk permintaan. Jika tidak ada Wilayah yang ditentukan, Penyedia AWS Kredensi Beban Kerja menentukan Wilayah dari SDK. Untuk informasi selengkapnya, lihat Menentukan kredensi dan Wilayah default Anda di AWS SDK untuk Panduan Pengembang Rust.

path_prefix

Awalan URI digunakan untuk menentukan apakah permintaan adalah permintaan berbasis jalur. Defaultnya adalah “/v1/”.

max_conn

Jumlah maksimum koneksi dari klien HTTP yang diizinkan oleh Penyedia Kre AWS densi Beban Kerja, dalam kisaran 1 hingga 1000. Defaultnya adalah 800.

max_roles

Jumlah maksimum peran IAM simultan untuk akses lintas akun, dalam kisaran 1 hingga 20. Defaultnya adalah 20. Untuk informasi selengkapnya, lihat Mengambil rahasia di seluruh akun dengan rantai peran.

Opsi cache ([capabilities.secrets_manager.cache])
ttl_seconds

TTL dalam hitungan detik untuk item yang di-cache, dalam kisaran 0 hingga 3600. Defaultnya adalah 300. 0 menunjukkan bahwa tidak ada caching.

cache_size

Jumlah maksimum rahasia yang dapat disimpan dalam cache, dalam kisaran 1 hingga 1000. Defaultnya adalah 1000.

Opsi keamanan ([capabilities.secrets_manager.security])
ssrf_headers

Daftar nama header yang diperiksa oleh Penyedia AWS KredenSIAL Beban Kerja untuk token SSRF. Defaultnya adalah "X-Aws-Parameters-Secrets-Token, X-Vault-Token”.

ssrf_env_variables

Daftar nama variabel lingkungan yang diperiksa Penyedia AWS KredenSIAL Beban Kerja dalam urutan berurutan untuk token SSRF. Variabel lingkungan dapat berisi token atau referensi ke file token seperti di:AWS_TOKEN=file:///var/run/awssmatoken. Defaultnya adalah "AWS_TOKEN, AWS_SESSION_TOKEN, AWS_CONTAINER_AUTHORIZATION_TOKEN”.

Opsi pencatatan ([logging])
log_level

Tingkat detail yang dilaporkan dalam log untuk Penyedia KredenSIAL B AWS eban Kerja: DEBUG, INFO, WARN, ERROR, atau NONE. Defaultnya adalah INFO.

log_to_file

Apakah akan masuk ke file atau stdout/stderr: true ataufalse. Nilai default-nya true.

Fitur opsional

Penyedia AWS Kredensi Beban Kerja dapat dibangun dengan fitur opsional dengan meneruskan --features bendera kecargo build. Fitur yang tersedia adalah:

Membangun fitur
prefer-post-quantum

Membuat X25519MLKEM768 algoritma pertukaran kunci prioritas tertinggi. Jika tidak, tersedia tetapi bukan prioritas tertinggi. X25519MLKEM768adalah algoritma pertukaran kunci pasca-kuantum hibrida yang aman.

fips

Membatasi suite sandi yang digunakan oleh penyedia hanya FIPS-approved untuk cipher.

Pencatatan log

Pencatatan lokal

Penye AWS dia KredenSIAL Beban Kerja mencatat kesalahan secara lokal ke file logs/secrets_manager_provider.log atau stdout/stderr tergantung pada variabel log_to_file konfigurasi. Saat aplikasi Anda memanggil Penye AWS dia Kredensi Beban Kerja untuk mendapatkan rahasia, panggilan tersebut muncul di log lokal. Mereka tidak muncul di CloudTrail log.

Rotasi log

Penye AWS dia Kredensi Beban Kerja membuat file log baru ketika file mencapai 10 MB, dan menyimpan hingga lima file log total.

AWS pencatatan layanan

Log tidak masuk ke Manajer Rahasia, CloudTrail, atau CloudWatch. Permintaan untuk mendapatkan rahasia dari Penyedia AWS Kredensi Beban Kerja tidak muncul di log tersebut. Ketika Penye AWS dia Kredensia Beban Kerja membuat panggilan ke Manajer Rahasia untuk mendapatkan rahasia, panggilan itu direkam CloudTrail dengan string agen pengguna yang berisiaws-workload-credentials-provider.

Anda dapat mengonfigurasi opsi logging diKonfigurasikan AWS Penyedia Kredensia Beban Kerja.

Pertimbangan keamanan

Domain kepercayaan

Untuk arsitektur penyedia lokal, domain kepercayaan adalah tempat titik akhir penyedia dan token SSRF dapat diakses, yang biasanya merupakan seluruh host. Domain kepercayaan untuk Penyedia Kre AWS denSIAL Beban Kerja harus sesuai dengan domain tempat kredenSIAL Manajer Rahasia tersedia untuk mempertahankan postur keamanan yang sama. Misalnya, di Amazon EC2 domain kepercayaan untuk Penyedia Kreden AWS SIAL Beban Kerja akan sama dengan domain kredenSIAL saat menggunakan peran untuk Amazon EC2.

penting

Aplikasi sadar keamanan yang belum menggunakan solusi berbasis penyedia dengan kredenSIAL Manajer Rahasia yang terkunci ke aplikasi harus mempertimbangkan untuk menggunakan AWS SDK khusus bahasa atau solusi caching. Untuk informasi selengkapnya, lihat M endapatkan rahasia.