Ambil rahasia Secrets Manager melalui variabel lingkungan Amazon ECS - Amazon Elastic Container Service

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

Ambil rahasia Secrets Manager melalui variabel lingkungan Amazon ECS

Saat Anda menyuntikkan rahasia sebagai variabel lingkungan, Anda dapat menentukan konten lengkap rahasia, kunci JSON tertentu di dalam rahasia, atau versi tertentu dari rahasia yang akan disuntikkan. Hal ini membantu Anda mengontrol data sensitif yang diekspos ke kontainer Anda. Untuk informasi selengkapnya tentang versioning rahasia, lihat Konsep dan Istilah Penting untuk AWS Secrets Manager dalam Panduan Pengguna AWS Secrets Manager .

Berikut ini harus dipertimbangkan saat menggunakan variabel lingkungan untuk menyuntikkan rahasia Secrets Manager ke dalam wadah.

  • Data sensitif disuntikkan ke dalam kontainer Anda ketika kontainer awalnya dimulai. Jika rahasia kemudian diperbarui atau diputar, kontainer tidak akan menerima nilai yang diperbarui secara otomatis. Anda harus menjalankan tugas baru atau jika tugas Anda adalah bagian dari layanan Anda dapat memperbarui layanan dan menggunakan Memaksa deployment baru untuk memaksa layanan untuk meluncurkan tugas baru.

  • Untuk tugas Amazon ECS aktif AWS Fargate, pertimbangkan hal berikut:

    • Untuk menyuntikkan konten penuh rahasia sebagai variabel lingkungan atau dalam konfigurasi log, Anda harus menggunakan versi 1.3.0 platform atau yang lebih baru. Untuk informasi, lihat Versi platform Fargate Linux untuk Amazon ECS.

    • Untuk menyuntikkan kunci JSON tertentu atau versi rahasia sebagai variabel lingkungan atau dalam konfigurasi log, Anda harus menggunakan versi platform 1.4.0 atau yang lebih baru (Linux) atau 1.0.0 (Windows). Untuk informasi, lihat Versi platform Fargate Linux untuk Amazon ECS.

  • Untuk tugas Amazon ECS di EC2, hal-hal berikut harus dipertimbangkan:

    • Untuk menyuntikkan rahasia menggunakan kunci JSON atau versi rahasia tertentu, instans kontainer Anda harus memiliki versi 1.37.0 agen kontainer atau yang lebih baru. Namun, kami merekomendasikan untuk menggunakan versi agen kontainer terbaru. Untuk informasi tentang memeriksa versi agen Anda dan memperbarui ke versi terbaru, lihat Memperbarui agen kontainer Amazon ECS.

      Untuk menyuntikkan konten penuh rahasia sebagai variabel lingkungan atau untuk menyuntikkan rahasia dalam konfigurasi log, instans kontainer Anda harus memiliki versi 1.22.0 agen kontainer atau yang lebih baru.

  • Gunakan titik akhir VPC antarmuka untuk meningkatkan kontrol keamanan dan terhubung ke Secrets Manager melalui subnet pribadi. Anda harus membuat titik akhir VPC antarmuka untuk Secrets Manager. Untuk informasi tentang titik akhir VPC, lihat Membuat titik akhir VPC di Panduan Pengguna.AWS Secrets Manager Untuk informasi selengkapnya tentang menggunakan Secrets Manager dan Amazon VPC, lihat Cara menyambung ke layanan Secrets Manager dalam Amazon VPC.

  • Untuk tugas Windows yang dikonfigurasi untuk menggunakan driver pencatatan awslogs, Anda juga harus mengatur variabel lingkungan ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE pada instans kontainer Anda. Gunakan sintaks berikut:

    <powershell> [Environment]::SetEnvironmentVariable("ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE", $TRUE, "Machine") Initialize-ECSAgent -Cluster <cluster name> -EnableTaskIAMRole -LoggingDrivers '["json-file","awslogs"]' </powershell>
  • Definisi tugas Anda harus menggunakan peran eksekusi tugas dengan izin tambahan untuk Secrets Manager. Untuk informasi selengkapnya, lihat Peran IAM eksekusi tugas Amazon ECS.

Buat AWS Secrets Manager rahasianya

Anda dapat menggunakan konsol Secrets Manager untuk membuat rahasia untuk data sensitif Anda. Untuk informasi selengkapnya, lihat Membuat AWS Secrets Manager rahasia di Panduan AWS Secrets Manager Pengguna.

Tambahkan variabel lingkungan ke definisi wadah

Dalam ketentuan kontainer Anda, Anda dapat menentukan hal berikut:

  • Objek secrets yang berisi nama variabel lingkungan untuk diatur dalam kontainer

  • Amazon Resource Name (ARN) rahasia Secrets Manager

  • Parameter tambahan yang berisi data sensitif untuk hadir ke kontainer

Contoh berikut menunjukkan sintaks lengkap yang harus ditentukan untuk rahasia Secrets Manager.

arn:aws:secretsmanager:region:aws_account_id:secret:secret-name:json-key:version-stage:version-id

Bagian berikut menjelaskan parameter tambahan. Parameter ini opsional, tetapi jika Anda tidak menggunakannya, Anda harus menyertakan titik dua : untuk menggunakan nilai default. Contoh disediakan di bawah ini untuk konteks yang lebih.

json-key

Menentukan nama kunci dalam pasangan kunci-nilai dengan nilai yang ingin Anda tetapkan sebagai nilai variabel lingkungan. Hanya nilai dalam format JSON yang didukung. Jika Anda tidak menentukan kunci JSON, maka konten penuh dari rahasia tersebut akan digunakan.

version-stage

Menentukan label pementasan versi rahasia yang ingin Anda gunakan. Jika label pementasan versi ditentukan, Anda tidak dapat menentukan ID versi. Jika tidak ada tahap versi yang ditentukan, perilaku default adalah untuk mengambil rahasia dengan label pementasan AWSCURRENT.

Label tahapan digunakan untuk melacak berbagai versi rahasia saat diperbarui atau dirotasi. Setiap versi rahasia memiliki satu atau beberapa label tahapan dan satu ID. Untuk informasi selengkapnya, lihat Syarat dan Konsep Utama AWS Secrets Manager dalam Panduan AWS Secrets Manager Pengguna.

version-id

Menentukan pengenal unik dari versi rahasia yang ingin Anda gunakan. Jika ID versi ditentukan, Anda tidak dapat menentukan label pementasan versi. Jika tidak ada ID versi yang ditentukan, perilaku default adalah untuk mengambil rahasia dengan label pementasan AWSCURRENT.

ID versi digunakan untuk melacak berbagai versi rahasia saat diperbarui atau dirotasi. Setiap versi rahasia memiliki satu ID. Untuk informasi selengkapnya, lihat Syarat dan Konsep Utama AWS Secrets Manager dalam Panduan AWS Secrets Manager Pengguna.

Contoh ketentuan kontainer

Contoh berikut menunjukkan cara Anda dapat mereferensikan rahasia Secrets Manager dalam definisi container Anda.

contoh mereferensikan rahasia penuh

Berikut ini adalah cuplikan ketentuan tugas yang menunjukkan format ketika mereferensikan teks lengkap dari rahasia Secrets Manager.

{ "containerDefinitions": [{ "secrets": [{ "name": "environment_variable_name", "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name-AbCdEf" }] }] }

Untuk mengakses nilai rahasia ini dari dalam wadah, Anda perlu memanggil file$environment_variable_name.

contoh mereferensikan kunci tertentu dalam sebuah rahasia

Berikut ini menunjukkan contoh output dari get-secret-valueperintah yang menampilkan isi rahasia bersama dengan label pementasan versi dan ID versi yang terkait dengannya.

{ "ARN": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf", "Name": "appauthexample", "VersionId": "871d9eca-18aa-46a9-8785-981ddEXAMPLE", "SecretString": "{\"username1\":\"password1\",\"username2\":\"password2\",\"username3\":\"password3\"}", "VersionStages": [ "AWSCURRENT" ], "CreatedDate": 1581968848.921 }

Referensikan kunci tertentu dari output sebelumnya dalam ketentuan kontainer dengan menentukan nama kunci di akhir ARN.

{ "containerDefinitions": [{ "secrets": [{ "name": "environment_variable_name", "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf:username1::" }] }] }
contoh mereferensikan versi rahasia tertentu

Berikut ini menunjukkan contoh output dari perintah describe-secret yang menampilkan konten rahasia yang tidak terenkripsi bersama dengan metadata untuk semua versi rahasia.

{ "ARN": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf", "Name": "appauthexample", "Description": "Example of a secret containing application authorization data.", "RotationEnabled": false, "LastChangedDate": 1581968848.926, "LastAccessedDate": 1581897600.0, "Tags": [], "VersionIdsToStages": { "871d9eca-18aa-46a9-8785-981ddEXAMPLE": [ "AWSCURRENT" ], "9d4cb84b-ad69-40c0-a0ab-cead3EXAMPLE": [ "AWSPREVIOUS" ] } }

Referensikan label tahapan versi tertentu dari output sebelumnya dalam ketentuan kontainer dengan menentukan nama kunci di akhir ARN.

{ "containerDefinitions": [{ "secrets": [{ "name": "environment_variable_name", "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf::AWSPREVIOUS:" }] }] }

Referensikan ID versi tertentu dari output sebelumnya dalam ketentuan kontainer dengan menentukan nama kunci di akhir ARN.

{ "containerDefinitions": [{ "secrets": [{ "name": "environment_variable_name", "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf:::9d4cb84b-ad69-40c0-a0ab-cead3EXAMPLE" }] }] }
contoh mereferensikan kunci dan label tahapan versi tertentu dari suatu rahasia

Bagian berikut menunjukkan cara mereferensikan kunci tertentu dalam rahasia dan label tahapan versi tertentu.

{ "containerDefinitions": [{ "secrets": [{ "name": "environment_variable_name", "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf:username1:AWSPREVIOUS:" }] }] }

Untuk menentukan kunci dan versi ID tertentu, gunakan sintaks berikut.

{ "containerDefinitions": [{ "secrets": [{ "name": "environment_variable_name", "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf:username1::9d4cb84b-ad69-40c0-a0ab-cead3EXAMPLE" }] }] }

Untuk informasi tentang cara membuat definisi tugas dengan rahasia yang ditentukan dalam variabel lingkungan, lihatMembuat definisi tugas Amazon ECS menggunakan konsol.