Gunakan AWS Secrets Manager rahasia dalam GitHub pekerjaan - AWS Secrets Manager

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

Gunakan AWS Secrets Manager rahasia dalam GitHub pekerjaan

Untuk menggunakan rahasia dalam GitHub pekerjaan, Anda dapat menggunakan GitHub tindakan untuk mengambil rahasia dari AWS Secrets Manager dan menambahkannya sebagai variabel Lingkungan bertopeng dalam alur kerja Anda GitHub . Untuk informasi selengkapnya tentang GitHub Tindakan, lihat Memahami GitHub Tindakan di GitHub Dokumen.

Ketika Anda menambahkan rahasia ke GitHub lingkungan Anda, itu tersedia untuk semua langkah lain dalam GitHub pekerjaan Anda. Ikuti panduan dalam Pengerasan Keamanan untuk GitHub Tindakan untuk membantu mencegah rahasia di lingkungan Anda disalahgunakan.

Anda dapat mengatur seluruh string dalam nilai rahasia sebagai nilai variabel lingkungan, atau jika string adalah JSON, Anda dapat mengurai JSON untuk mengatur variabel lingkungan individu untuk setiap pasangan nilai kunci JSON. Jika nilai rahasia adalah biner, tindakan mengubahnya menjadi string.

Untuk melihat variabel lingkungan yang dibuat dari rahasia Anda, aktifkan logging debug. Untuk informasi selengkapnya, lihat Mengaktifkan logging debug di Dokumen. GitHub

Untuk menggunakan variabel lingkungan yang dibuat dari rahasia Anda, lihat Variabel lingkungan di GitHub Dokumen.

Prasyarat

Untuk menggunakan tindakan ini, Anda harus terlebih dahulu mengonfigurasi AWS kredensil dan mengatur Wilayah AWS di GitHub lingkungan Anda dengan menggunakan langkah tersebutconfigure-aws-credentials. Ikuti petunjuk di Mengonfigurasi Tindakan AWS Kredensial Untuk GitHub Tindakan untuk Mengasumsikan peran secara langsung menggunakan penyedia GitHub OIDC. Ini memungkinkan Anda untuk menggunakan kredensil berumur pendek dan menghindari menyimpan kunci akses tambahan di luar Secrets Manager.

Peran IAM yang diasumsikan tindakan harus memiliki izin berikut:

  • GetSecretValuepada rahasia yang ingin Anda ambil.

  • ListSecretspada semua rahasia.

  • (Opsional) Decrypt pada KMS key jika rahasia dienkripsi dengan file. kunci yang dikelola pelanggan

Untuk informasi selengkapnya, lihat Otentikasi dan kontrol akses untuk AWS Secrets Manager.

Penggunaan

Untuk menggunakan tindakan, tambahkan langkah ke alur kerja Anda yang menggunakan sintaks berikut.

- name: Step name uses: aws-actions/aws-secretsmanager-get-secrets@v2 with: secret-ids: | secretId1 ENV_VAR_NAME, secretId2 name-transformation: (Optional) uppercase|lowercase|none parse-json-secrets: (Optional) true|false
Parameter
secret-ids

Rahasia ARNS, nama, dan awalan nama.

Untuk mengatur nama variabel lingkungan, masukkan sebelum ID rahasia, diikuti dengan koma. Misalnya ENV_VAR_1, secretId membuat variabel lingkungan bernama ENV_VAR_1 dari rahasia. secretId Nama variabel lingkungan dapat terdiri dari huruf besar, angka, dan garis bawah.

Untuk menggunakan awalan, masukkan setidaknya tiga karakter diikuti dengan tanda bintang. Misalnya dev* mencocokkan semua rahasia dengan nama yang dimulai di dev. Jumlah maksimum rahasia pencocokan yang dapat diambil adalah 100. Jika Anda menetapkan nama variabel, dan awalan cocok dengan beberapa rahasia, maka tindakan gagal.

name-transformation

Secara default, langkah membuat setiap nama variabel lingkungan dari nama rahasia, diubah untuk menyertakan hanya huruf besar, angka, dan garis bawah, dan agar tidak dimulai dengan angka. Untuk huruf dalam nama, Anda dapat mengonfigurasi langkah untuk menggunakan huruf kecil dengan lowercase atau tidak mengubah huruf dengan. none Nilai default-nya adalah uppercase.

parse-json-secrets

(Opsional) Secara default, tindakan menetapkan nilai variabel lingkungan ke seluruh string JSON dalam nilai rahasia. Atur parse-json-secrets true untuk membuat variabel lingkungan untuk setiap pasangan kunci-nilai di JSON.

Perhatikan bahwa jika JSON menggunakan kunci peka huruf besar/kecil seperti “nama” dan “Nama”, tindakan akan memiliki konflik nama duplikat. Dalam hal ini, atur parse-json-secrets ke false dan parse nilai rahasia JSON secara terpisah.

Penamaan variabel lingkungan

Variabel lingkungan yang dibuat oleh tindakan diberi nama sama dengan rahasia tempat mereka berasal. Variabel lingkungan memiliki persyaratan penamaan yang lebih ketat daripada rahasia, sehingga tindakan mengubah nama rahasia untuk memenuhi persyaratan tersebut. Misalnya, tindakan mengubah huruf kecil menjadi huruf besar. Jika Anda mengurai JSON rahasia, maka nama variabel lingkungan mencakup nama rahasia dan nama kunci JSON, misalnya. MYSECRET_KEYNAME Anda dapat mengonfigurasi tindakan untuk tidak mengubah huruf kecil.

Jika dua variabel lingkungan akan berakhir dengan nama yang sama, tindakan gagal. Dalam hal ini, Anda harus menentukan nama yang ingin Anda gunakan untuk variabel lingkungan sebagai alias.

Contoh kapan nama mungkin bertentangan:

  • Sebuah rahasia bernama "MySecret" dan rahasia bernama “mysecret” keduanya akan menjadi variabel lingkungan bernama “MYSECRET”.

  • Sebuah rahasia bernama “SECRET_KEYNAME” dan rahasia JSON-parsed bernama “Secret” dengan kunci bernama “keyname” keduanya akan menjadi variabel lingkungan bernama “SECRET_KEYNAME”.

Anda dapat mengatur nama variabel lingkungan dengan menentukan alias, seperti yang ditunjukkan pada contoh berikut, yang menciptakan variabel bernama. ENV_VAR_NAME

secret-ids: | ENV_VAR_NAME, secretId2
Alias kosong
  • Jika Anda mengatur parse-json-secrets: true dan memasukkan alias kosong, diikuti dengan koma dan kemudian ID rahasia, tindakan tersebut memberi nama variabel lingkungan sama dengan kunci JSON yang diurai. Nama variabel tidak termasuk nama rahasia.

    Jika rahasia tidak berisi JSON yang valid, maka tindakan akan membuat satu variabel lingkungan dan menamainya sama dengan nama rahasia.

  • Jika Anda mengatur parse-json-secrets: false dan memasukkan alias kosong, diikuti dengan koma dan ID rahasia, tindakan tersebut memberi nama variabel lingkungan seolah-olah Anda tidak menentukan alias.

Contoh berikut menunjukkan alias kosong.

,secret2

Contoh

contoh 1 Dapatkan rahasia dengan nama dan oleh ARN

Contoh berikut menciptakan variabel lingkungan untuk rahasia diidentifikasi dengan nama dan oleh ARN.

- name: Get secrets by name and by ARN uses: aws-actions/aws-secretsmanager-get-secrets@v2 with: secret-ids: | exampleSecretName arn:aws:secretsmanager:us-east-2:123456789012:secret:test1-a1b2c3 0/test/secret /prod/example/secret SECRET_ALIAS_1,test/secret SECRET_ALIAS_2,arn:aws:secretsmanager:us-east-2:123456789012:secret:test2-a1b2c3 ,secret2

Variabel lingkungan dibuat:

EXAMPLESECRETNAME: secretValue1 TEST1: secretValue2 _0_TEST_SECRET: secretValue3 _PROD_EXAMPLE_SECRET: secretValue4 SECRET_ALIAS_1: secretValue5 SECRET_ALIAS_2: secretValue6 SECRET2: secretValue7
contoh 2 Dapatkan semua rahasia yang dimulai dengan awalan

Contoh berikut menciptakan variabel lingkungan untuk semua rahasia dengan nama yang dimulai dengan beta.

- name: Get Secret Names by Prefix uses: 2 with: secret-ids: | beta* # Retrieves all secrets that start with 'beta'

Variabel lingkungan dibuat:

BETASECRETNAME: secretValue1 BETATEST: secretValue2 BETA_NEWSECRET: secretValue3
contoh 3 Parse JSON secara rahasia

Contoh berikut menciptakan variabel lingkungan dengan mengurai JSON dalam rahasia.

- name: Get Secrets by Name and by ARN uses: aws-actions/aws-secretsmanager-get-secrets@v2 with: secret-ids: | test/secret ,secret2 parse-json-secrets: true

Rahasianya test/secret memiliki nilai rahasia berikut.

{ "api_user": "user", "api_key": "key", "config": { "active": "true" } }

Rahasianya secret2 memiliki nilai rahasia berikut.

{ "myusername": "alejandro_rosalez", "mypassword": "EXAMPLE_PASSWORD" }

Variabel lingkungan dibuat:

TEST_SECRET_API_USER: "user" TEST_SECRET_API_KEY: "key" TEST_SECRET_CONFIG_ACTIVE: "true" MYUSERNAME: "alejandro_rosalez" MYPASSWORD: "EXAMPLE_PASSWORD"
contoh 4 Gunakan huruf kecil untuk nama variabel lingkungan

Contoh berikut menciptakan variabel lingkungan dengan nama huruf kecil.

- name: Get secrets uses: aws-actions/aws-secretsmanager-get-secrets@v2 with: secret-ids: exampleSecretName name-transformation: lowercase

Variabel lingkungan dibuat:

examplesecretname: secretValue