Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menggunakan AWS Secrets Manager Agen
Bagaimana Agen Secrets Manager bekerja
AWS Secrets Manager Agen adalah 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
Secrets Manager Agent mengambil dan menyimpan rahasia di memori, memungkinkan aplikasi Anda mendapatkan rahasia dari localhost alih-alih melakukan panggilan langsung ke Secrets Manager. Secrets Manager Agent hanya dapat membaca rahasia—tidak dapat memodifikasinya.
Secrets Manager Agent adalah open source. Kode sumber, instruksi instalasi, dan informasi rilis terbaru tersedia di GitHub
penting
Secrets Manager Agent menggunakan AWS kredensyal dari lingkungan Anda untuk memanggil Secrets Manager. Ini mencakup perlindungan terhadap Server Side Request Forgery (SSRF) untuk membantu meningkatkan keamanan rahasia. Secrets Manager Agent menggunakan pertukaran ML-KEM kunci pasca-kuantum sebagai pertukaran kunci prioritas tertinggi secara default.
Memahami caching Agen Secrets Manager
Secrets Manager Agent menggunakan cache dalam memori yang disetel ulang saat Agen Secrets Manager dimulai ulang. 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
Secrets Manager Agent tidak menyertakan pembatalan cache. Jika rahasia berputar sebelum entri cache kedaluwarsa, Agen Secrets Manager mungkin mengembalikan nilai rahasia basi.
Secrets Manager Agent mengembalikan nilai rahasia dalam format yang sama dengan responsGetSecretValue. Nilai rahasia tidak dienkripsi dalam cache.
Topik
Membangun Agen Secrets Manager
Sebelum Anda mulai, pastikan Anda memiliki alat pengembangan standar dan alat Rust yang diinstal untuk platform Anda.
catatan
Membangun agen dengan fips fitur yang diaktifkan di macOS saat ini memerlukan solusi berikut:
-
Buat variabel lingkungan
SDKROOTyang disebut yang diatur ke hasil berjalanxcrun --show-sdk-path
Instal Agen Secrets Manager
Pilih lingkungan komputasi Anda dari opsi penginstalan berikut.
Ambil rahasia dengan Agen Secrets Manager
Untuk mengambil rahasia, hubungi titik akhir Secrets Manager Agent lokal dengan nama rahasia atau ARN sebagai parameter kueri. Secara default, Secrets Manager Agent mengambil AWSCURRENT versi rahasia. Untuk mengambil versi yang berbeda, gunakan parameter versionStage atau VersionId.
penting
Untuk membantu melindungi Agen Secrets Manager, Anda harus menyertakan header token SSRF sebagai bagian dari setiap permintaan:. X-Aws-Parameters-Secrets-Token Secrets Manager Agent menolak permintaan yang tidak memiliki header ini atau yang memiliki token SSRF tidak valid. Anda dapat menyesuaikan nama header SSRF di file. Konfigurasikan Agen Secrets Manager
Izin yang diperlukan
Secrets Manager Agent menggunakan AWS SDK for Rust, yang menggunakan rantai penyedia AWS kredensyal. Identitas kredensyal IAM ini menentukan izin yang dimiliki Agen Secrets Manager 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 Secrets Manager Agent, setiap pengguna dengan akses ke lingkungan komputasi dan token SSRF dapat mengakses rahasia dari cache Secrets Manager Agent. Untuk informasi selengkapnya, lihat Pertimbangan keamanan.
Contoh permintaan
Memahami parameter RefreshNow
Secrets Manager Agent 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, Secrets Manager Agent 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 diatur ketrue, itu akan mengganti TTL yang ditentukan dalam file konfigurasi Secrets Manager Agent dan membuat panggilan API ke Secrets Manager.
Ambil rahasia di seluruh akun dengan rantai peran
Role chaining memungkinkan Secrets Manager Agent untuk mengambil rahasia dari AWS akun lain dengan mengasumsikan peran IAM menggunakan. AWS STS AssumeRole Secrets Manager Agent 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:
-
Kredensyal lingkungan Secrets Manager Agent harus memiliki
sts:AssumeRoleizin pada peran target ARN. -
Peran target harus memiliki
secretsmanager:GetSecretValuedansecretsmanager:DescribeSecretizin untuk rahasia yang ingin Anda akses. -
Kebijakan kepercayaan peran target harus memungkinkan identitas Agen Secrets Manager untuk mengambilnya.
Ambil rahasia lintas akun
Sertakan parameter roleArn kueri dalam permintaan Anda ke Agen Secrets Manager 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 Secrets Manager Agent. Setelah jumlah maksimum peran tercapai, permintaan dengan ARN peran baru ditolak dengan 400 kesalahan hingga Agen Secrets Manager 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 Agen Secrets Manager untuk mengambilnya.
Pre-fetch rahasia saat startup
Secara default, Secrets Manager Agent mengambil rahasia sesuai permintaan saat aplikasi Anda memintanya. Dengan pre-fetching, Secrets Manager Agent 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—Agen Secrets Manager mulai menerima permintaan 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. Secrets Manager Agent 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 [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, Secrets Manager Agent 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 agen memulai secara bersamaan.
contoh Pre-fetch konfigurasi dengan rahasia eksplisit
[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
[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
[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 Agen Secrets Manager
Untuk mengubah konfigurasi Secrets Manager Agent, buat file konfigurasi TOMB./aws_secretsmanager_agent --config
config.toml
Opsi konfigurasi
log_level-
Tingkat detail yang dilaporkan dalam log untuk Secrets Manager Agent: DEBUG, INFO, WARN, ERROR, atau NONE. Defaultnya adalah INFO.
log_to_file-
Apakah akan masuk ke file atau stdout/stderr:
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 Region yang ditentukan, Secrets Manager Agent menentukan Region dari SDK. Untuk informasi selengkapnya, lihat Menentukan kredensyal dan Wilayah default Anda di AWS SDK for Rust Developer Guide.
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.
ssrf_headers-
Daftar nama header Secrets Manager Agent memeriksa token SSRF. Defaultnya adalah "X-Aws-Parameters-Secrets-Token, X-Vault-Token”.
ssrf_env_variables-
Daftar nama variabel lingkungan yang diperiksa Agen Secrets Manager 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”. 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 Agen Secrets Manager, 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.
Fitur opsional
Secrets Manager Agent dapat dibangun dengan fitur opsional dengan meneruskan --features bendera kecargo 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 agen hanya untuk cipher. FIPS-approved
Pencatatan log
- Penebangan lokal
-
Secrets Manager Agent mencatat kesalahan secara lokal ke file
logs/secrets_manager_agent.logatau stdout/stderr bergantung pada variabellog_to_filekonfigurasi. Ketika aplikasi Anda memanggil Agen Secrets Manager untuk mendapatkan rahasia, panggilan tersebut muncul di log lokal. Mereka tidak muncul di CloudTrail log. - Rotasi log
-
Secrets Manager Agent membuat file log baru ketika file mencapai 10 MB, dan menyimpan hingga lima file log total.
- AWS layanan logging
-
Log tidak masuk ke Secrets Manager, CloudTrail, atau CloudWatch. Permintaan untuk mendapatkan rahasia dari Agen Secrets Manager tidak muncul di log tersebut. Ketika Agen Secrets Manager melakukan panggilan ke Secrets Manager untuk mendapatkan rahasia, panggilan itu direkam CloudTrail dengan string agen pengguna yang berisi
aws-secrets-manager-agent.
Anda dapat mengonfigurasi opsi logging di fileKonfigurasikan Agen Secrets Manager.
Pertimbangan keamanan
- Domain kepercayaan
-
Untuk arsitektur agen, domain kepercayaan adalah tempat titik akhir agen dan token SSRF dapat diakses, yang biasanya merupakan seluruh host. Domain kepercayaan untuk Agen Secrets Manager harus sesuai dengan domain tempat kredensyal Secrets Manager tersedia untuk mempertahankan postur keamanan yang sama. Misalnya, di Amazon EC2 domain kepercayaan untuk Agen Secrets Manager akan sama dengan domain kredensyal saat menggunakan peran untuk Amazon EC2.
penting
Aplikasi sadar keamanan yang belum menggunakan solusi agen dengan kredensyal Secrets Manager yang dikunci ke aplikasi harus mempertimbangkan untuk menggunakan AWS SDK atau solusi caching khusus bahasa. Untuk informasi selengkapnya, lihat Mendapatkan rahasia.