Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menggunakan AWS Penyedia Kredensyal Beban Kerja
Bagaimana AWS Workload Credentials Provider bekerja
Penyedia Kredensial AWS Beban Kerja (sebelumnya AWS Secrets Manager Agen) menyediakan layanan HTTP sisi klien yang membantu Anda menstandarisasi cara Anda menggunakan rahasia dari Secrets Manager di seluruh lingkungan komputasi Anda. Anda dapat menggunakannya dengan layanan berikut:
-
AWS Lambda
-
Amazon Elastic Container Service
-
Amazon Elastic Kubernetes Service
-
Amazon Elastic Compute Cloud
Penyedia Kredensial AWS Beban Kerja mengambil dan menyimpan rahasia di memori, memungkinkan aplikasi Anda mendapatkan rahasia dari localhost alih-alih melakukan panggilan langsung ke Secrets Manager. Penyedia Kredensial AWS Beban Kerja hanya dapat membaca rahasia—tidak dapat memodifikasinya.
Penyedia Kredensial AWS Beban Kerja adalah open source. Kode sumber, instruksi instalasi, dan informasi rilis terbaru tersedia di GitHub
penting
Penyedia Kredensial AWS Beban Kerja menggunakan AWS kredensyal dari lingkungan Anda untuk memanggil Secrets Manager. Ini mencakup perlindungan terhadap Server Side Request Forgery (SSRF) untuk membantu meningkatkan keamanan rahasia. Penyedia Kredensial AWS Beban Kerja menggunakan pertukaran kunci pasca-kuantum sebagai pertukaran ML-KEM kunci prioritas tertinggi secara default.
Memahami AWS Caching Penyedia Kredensyal Beban Kerja
Penyedia Kredensial AWS Beban Kerja menggunakan cache dalam memori yang disetel ulang saat Penyedia Kredensyal Beban Kerja dimulai ulang.AWS Ini secara berkala menyegarkan nilai rahasia yang di-cache berdasarkan hal berikut:
-
Frekuensi refresh default (TTL) adalah 300 detik
-
Anda dapat memodifikasi TTL menggunakan file konfigurasi
-
Penyegaran terjadi saat Anda meminta rahasia setelah TTL kedaluwarsa
catatan
Penyedia Kredensial AWS Beban Kerja tidak menyertakan pembatalan cache. Jika rahasia berputar sebelum entri cache kedaluwarsa, Penyedia Kredensyal AWS Beban Kerja mungkin mengembalikan nilai rahasia basi.
Penyedia Kredensial AWS Beban Kerja mengembalikan nilai rahasia dalam format yang sama dengan respons. GetSecretValue Nilai rahasia tidak dienkripsi dalam cache.
Topik
Membangun AWS Penyedia Kredensyal Beban Kerja
Sebelum Anda mulai, pastikan Anda memiliki alat pengembangan standar dan alat Rust yang diinstal untuk platform Anda.
catatan
Membangun penyedia dengan fips fitur yang diaktifkan di macOS saat ini memerlukan solusi berikut:
-
Buat variabel lingkungan
SDKROOTyang disebut yang disetel ke hasil berjalanxcrun --show-sdk-path
Instal AWS Penyedia Kredensyal Beban Kerja
Pilih lingkungan komputasi Anda dari opsi penginstalan berikut.
Ambil rahasia dengan AWS Penyedia Kredensyal Beban Kerja
Untuk mengambil rahasia, panggil titik akhir Penyedia Kredensial AWS Beban Kerja lokal dengan nama rahasia atau ARN sebagai parameter kueri. Secara default, Penyedia Kredensial AWS Beban Kerja mengambil AWSCURRENT versi rahasia. Untuk mengambil versi yang berbeda, gunakan parameter versionStage atau VersionId.
penting
Untuk membantu melindungi Penyedia Kredensyal AWS Beban Kerja, Anda harus menyertakan header token SSRF sebagai bagian dari setiap permintaan:. X-Aws-Parameters-Secrets-Token Penyedia Kredensial AWS Beban Kerja menolak permintaan yang tidak memiliki header ini atau yang memiliki token SSRF tidak valid. Anda dapat menyesuaikan nama header SSRF di file. Konfigurasikan AWS Penyedia Kredensyal Beban Kerja
Izin yang diperlukan
Penyedia Kredensial AWS Beban Kerja menggunakan AWS SDK for Rust, yang menggunakan rantai penyedia kredensyal.AWS Identitas kredensyal IAM ini menentukan izin yang dimiliki Penyedia Kredensyal AWS 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 yang memiliki akses ke lingkungan komputasi dan token SSRF dapat mengakses rahasia dari cache Penyedia Kredensyal Beban Kerja.AWS Untuk informasi selengkapnya, lihat Pertimbangan keamanan.
Permintaan contoh
Memahami parameter RefreshNow
Penyedia Kredensial AWS 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) kedaluwarsa, biasanya setiap 300 detik. Namun, pendekatan ini terkadang dapat menghasilkan nilai rahasia basi, terutama jika rahasia berputar sebelum entri cache kedaluwarsa.
Untuk mengatasi batasan ini, Penyedia Kredensial AWS Beban Kerja mendukung parameter yang disebut refreshNow di URL. Anda dapat menggunakan parameter ini untuk memaksa penyegaran langsung nilai rahasia, melewati cache dan memastikan Anda memiliki informasi terbaru.
- Perilaku default (tanpa
refreshNow) -
-
Menggunakan nilai cache sampai TTL kedaluwarsa
-
Menyegarkan rahasia hanya setelah TTL (default 300 detik)
-
Dapat mengembalikan nilai basi jika rahasia berputar sebelum cache kedaluwarsa
-
- Perilaku dengan
refreshNow=true -
-
Melewati cache sepenuhnya
-
Mengambil nilai rahasia terbaru langsung dari Secrets Manager
-
Memperbarui cache dengan nilai segar 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 akan mengganti TTL yang ditentukan dalam file konfigurasi Penyedia Kredensial AWS Beban Kerja dan membuat panggilan API ke Secrets Manager.
Ambil rahasia di seluruh akun dengan rantai peran
Role chaining memungkinkan Penyedia Kredensial AWS Beban Kerja untuk mengambil rahasia dari AWS akun lain dengan mengasumsikan peran IAM menggunakan.AWS STSAssumeRole Penyedia Kredensial AWS 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 ini:
-
Kredensyal lingkungan Penyedia Kredensial AWS Beban Kerja harus memiliki
sts:AssumeRoleizin pada ARN peran target. -
Peran target harus memiliki
secretsmanager:GetSecretValuedansecretsmanager:DescribeSecretizin untuk rahasia yang ingin Anda akses. -
Kebijakan kepercayaan peran target harus memungkinkan identitas Penyedia Kredensial AWS Beban Kerja untuk mengasumsikannya.
Ambil rahasia lintas akun
Sertakan parameter roleArn kueri dalam permintaan Anda ke Penyedia Kredensial AWS Beban Kerja untuk menentukan peran mana yang akan diambil untuk pengambilan rahasia.
Konfigurasi dan batasan rantai peran
Konfigurasikan rantai peran dengan max_roles opsi di file konfigurasi TOMB Anda. Ini menetapkan jumlah maksimum peran yang diasumsikan secara simultan, dalam kisaran 1 hingga 20. Defaultnya adalah 20.
penting
Peran yang diasumsikan tidak dikeluarkan dari cache peran Penyedia Kredensyal AWS Beban Kerja. Setelah jumlah maksimum peran tercapai, permintaan dengan ARN peran baru ditolak dengan 400 kesalahan hingga Penyedia Kredensyal AWS Beban Kerja dimulai ulang.
Tanggapan kesalahan untuk rantai peran
400-
roleArnFormatnya tidak valid atau jumlah maksimum peran yang diasumsikan telah tercapai. 403-
AWS STS
AssumeRolePanggilan gagal. Verifikasi bahwa kebijakan kepercayaan peran target memungkinkan identitas Penyedia Kredensyal AWS Beban Kerja untuk mengasumsikannya.
Pre-fetch rahasia saat startup
Secara default, Penyedia Kredensial AWS Beban Kerja mengambil rahasia sesuai permintaan saat aplikasi Anda memintanya. Dengan pra-pengambilan, Penyedia Kredensial AWS Beban Kerja memuat rahasia tertentu ke dalam cache saat dijalankan, sehingga aplikasi Anda dapat segera mengaksesnya tanpa menunggu panggilan API pertama. Pre-fetching berjalan sebagai tugas latar belakang—Penyedia Kredensyal AWS Beban Kerja mulai menerima permintaan dengan segera dan tidak memblokir penyelesaian pra-pengambilan.
Anda dapat menentukan rahasia untuk diambil sebelumnya dengan dua cara:
-
Rahasia eksplisit — Daftar ID rahasia atau ARN tertentu.
-
Tag-based penemuan — Temukan rahasia dengan kunci tag. Penyedia Kredensial AWS Beban Kerja mengambil semua rahasia yang memiliki tag yang ditentukan.
Izin yang diperlukan
Selain izin standar untuk mengambil rahasia, pra-pengambilan membutuhkan yang berikut:
-
secretsmanager:BatchGetSecretValue— Diperlukan untuk semua operasi pra-pengambilan. -
secretsmanager:ListSecrets— Diperlukan hanya saat menggunakan penemuan berbasis tag.
Konfigurasikan pra-pengambilan
Tambahkan [capabilities.secrets_manager.prefetch] bagian ke file konfigurasi TOMB Anda. Pilihan berikut tersedia:
cache_buffer_ratio-
Fraksi maksimum cache yang harus diisi per klien selama pra-pengambilan, dalam kisaran 0,1 hingga 1,0. Defaultnya adalah 0,8. Ketika batas buffer tercapai, Penyedia Kredensial AWS Beban Kerja berhenti mengambil rahasia yang tersisa—itu tidak mengusir entri cache yang ada. Rahasia yang tidak dimuat selama pra-pengambilan masih tersedia sesuai permintaan.
max_jitter_seconds-
Penundaan acak dalam hitungan detik sebelum pra-pengambilan dimulai, dalam kisaran 0 hingga 10. Default-nya adalah 0. Gunakan ini untuk mencegah panggilan API di seluruh armada yang disinkronkan saat beberapa penyedia memulai pada waktu yang 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 Ambil 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 Kredensyal Beban Kerja
Untuk mengubah konfigurasi Penyedia Kredensial AWS Beban Kerja, buat file konfigurasi TOMB./aws-workload-credentials-provider sm
start --config config.toml
File konfigurasi mendukung format bersarang. Opsi Secrets Manager ditempatkan di bawah[capabilities.secrets_manager], dengan sub-bagian untuk pengaturan cache dan keamanan. Opsi logging 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 Secrets Manager
enabled-
Apakah kemampuan Secrets Manager aktif:
trueataufalse. Nilai default-nyatrue. http_port-
Port untuk server HTTP lokal, dalam kisaran 1024 hingga 65535. Defaultnya adalah 2773.
region-
AWS Wilayah yang akan digunakan untuk permintaan. Jika tidak ada Wilayah yang ditentukan, Penyedia Kredensial AWS Beban Kerja menentukan Wilayah dari SDK. Untuk informasi selengkapnya, lihat Menentukan kredensyal dan Wilayah default Anda di AWS SDK for Rust Developer Guide.
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 Kredensial AWS 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 Ambil 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 Kredensial AWS Beban Kerja untuk token SSRF. Defaultnya adalah "X-Aws-Parameters-Secrets-Token, X-Vault-Token”.
ssrf_env_variables-
Daftar variabel lingkungan menamai Penyedia Kredensial AWS Beban Kerja yang diperiksa secara berurutan untuk token SSRF. Variabel lingkungan dapat berisi token atau referensi ke file token seperti pada:
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 AWS Beban Kerja: DEBUG, INFO, WARN, ERROR, atau NONE. Defaultnya adalah INFO.
log_to_file-
Apakah akan masuk ke file atau stdout/stderr:
trueataufalse. Nilai default-nyatrue.
Fitur opsional
Penyedia Kredensial AWS Beban Kerja dapat dibuat dengan fitur opsional dengan meneruskan tanda ke. --features cargo build Fitur yang tersedia adalah:
Membangun fitur
prefer-post-quantum-
Membuat
X25519MLKEM768algoritma pertukaran kunci prioritas tertinggi. Jika tidak, itu tersedia tetapi tidak prioritas tertinggi.X25519MLKEM768adalah algoritma pertukaran kunci hybrid, pasca-kuantum aman. fips-
Membatasi cipher suite yang digunakan oleh penyedia hanya untuk cipher. FIPS-approved
Pencatatan log
- Penebangan lokal
-
Penyedia Kredensial AWS Beban Kerja mencatat kesalahan secara lokal ke file
logs/secrets_manager_provider.logatau stdout/stderr bergantung pada variabel konfigurasi.log_to_fileSaat aplikasi Anda memanggil Penyedia Kredensial AWS Beban Kerja untuk mendapatkan rahasia, panggilan tersebut akan muncul di log lokal. Mereka tidak muncul di CloudTrail log. - Rotasi log
-
Penyedia Kredensial AWS 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 Secrets Manager, CloudTrail, atau CloudWatch. Permintaan untuk mendapatkan rahasia dari Penyedia Kredensyal AWS Beban Kerja tidak muncul di log tersebut. Ketika Penyedia Kredensial AWS Beban Kerja melakukan panggilan ke Secrets Manager untuk mendapatkan rahasia, panggilan tersebut direkam CloudTrail dengan string agen pengguna yang berisi.
aws-workload-credentials-provider
Anda dapat mengonfigurasi opsi logging di fileKonfigurasikan AWS Penyedia Kredensyal 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 Kredensyal AWS Beban Kerja harus sesuai dengan domain tempat kredensyal Secrets Manager tersedia untuk mempertahankan postur keamanan yang sama. Misalnya, di Amazon EC2 domain kepercayaan untuk Penyedia Kredensyal AWS Beban Kerja akan sama dengan domain kredensyal saat menggunakan peran untuk Amazon EC2.
penting
Aplikasi sadar keamanan yang belum menggunakan solusi berbasis penyedia dengan kredensyal Secrets Manager yang dikunci ke aplikasi harus mempertimbangkan untuk menggunakan SDK atau solusi caching khusus bahasa AWS. Untuk informasi selengkapnya, lihat Mendapatkan rahasia.