Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Penandatanganan kode Lambda dengan AWS Signer
AWS Signeradalah layanan penandatanganan kode yang dikelola sepenuhnya yang memungkinkan Anda memvalidasi kode Anda terhadap tanda tangan digital untuk mengonfirmasi bahwa kode tidak berubah dan dari penerbit tepercaya. AWS Signerdapat digunakan bersama dengan AWS Lambda untuk memverifikasi bahwa fungsi dan lapisan tidak berubah sebelum penerapan ke lingkungan Anda. AWS Ini melindungi organisasi Anda dari pelaku jahat yang mungkin telah memperoleh kredensi untuk membuat fungsi baru atau memperbarui fungsi yang ada.
Untuk menyiapkan penandatanganan kode untuk fungsi Lambda Anda, mulailah dengan membuat bucket S3 dengan mengaktifkan versi. Setelah itu, buat profil penandatanganan denganAWS Signer, tentukan Lambda sebagai platform dan kemudian tentukan periode hari di mana profil penandatanganan valid. Contoh:
Signer: Type: AWS::Signer::SigningProfile Properties: PlatformId: AWSLambda-SHA384-ECDSA SignatureValidityPeriod: Type: DAYS Value: !Ref pValidDays
Kemudian gunakan profil penandatanganan dan buat konfigurasi penandatanganan dengan Lambda. Anda harus menentukan apa yang harus dilakukan ketika konfigurasi penandatanganan melihat artefak yang tidak cocok dengan tanda tangan digital yang diharapkan: peringatkan (tetapi izinkan penerapan) atau terapkan (dan blokir penerapan). Contoh di bawah ini dikonfigurasi untuk menegakkan dan memblokir penerapan.
SigningConfig: Type: AWS::Lambda::CodeSigningConfig Properties: AllowedPublishers: SigningProfileVersionArns: - !GetAtt Signer.ProfileVersionArn CodeSigningPolicies: UntrustedArtifactOnDeployment: Enforce
Anda sekarang telah AWS Signer mengonfigurasi dengan Lambda untuk memblokir penerapan yang tidak tepercaya. Mari kita asumsikan Anda telah selesai mengkodekan permintaan fitur dan sekarang siap untuk menerapkan fungsi. Langkah pertama adalah mem-zip kode dengan dependensi yang sesuai dan kemudian menandatangani artefak menggunakan profil penandatanganan yang Anda buat. Anda dapat melakukan ini dengan mengunggah artefak zip ke bucket S3 dan kemudian memulai pekerjaan penandatanganan.
aws signer start-signing-job \ --source 's3={bucketName=
your-versioned-bucket
,key=your-prefix/your-zip-artifact.zip
,version=QyaJ3c4qa50LXV.9VaZgXHlsGbvCXxpT
}' \ --destination 's3={bucketName=your-versioned-bucket
,prefix=your-prefix
/}' \ --profile-nameyour-signer-id
Anda mendapatkan output sebagai berikut, di mana jobId
adalah objek yang dibuat di bucket tujuan dan awalan dan jobOwner
merupakan Akun AWS ID 12 digit tempat pekerjaan dijalankan.
{ "jobId": "87a3522b-5c0b-4d7d-b4e0-4255a8e05388", "jobOwner": "111122223333" }
Dan sekarang Anda dapat menerapkan fungsi Anda menggunakan objek S3 yang ditandatangani dan konfigurasi penandatanganan kode yang Anda buat.
Fn: Type: AWS::Serverless::Function Properties: CodeUri: s3://your-versioned-bucket/your-prefix/87a3522b-5c0b-4d7d-b4e0-4255a8e05388.zip Handler: fn.handler Role: !GetAtt FnRole.Arn CodeSigningConfigArn: !Ref pSigningConfigArn
Sebagai alternatif, Anda dapat menguji penerapan fungsi dengan artefak zip sumber asli yang tidak ditandatangani. Penerapan akan gagal dengan pesan berikut:
Lambda cannot deploy the function. The function or layer might be signed using a signature that the client is not configured to accept. Check the provided signature for unsigned.
Jika Anda membangun dan menerapkan fungsi Anda menggunakan AWS Serverless Application Model (AWS SAM), perintah paket menangani pengunggahan artefak zip ke S3 dan juga memulai pekerjaan penandatanganan dan mendapatkan artefak yang ditandatangani. Anda dapat melakukan ini dengan perintah dan parameter berikut:
sam package -t your-template.yaml \ --output-template-file
your-output.yaml
\ --s3-bucketyour-versioned-bucket
\ --s3-prefixyour-prefix
\ --signing-profilesyour-signer-id
AWS Signermembantu Anda memverifikasi bahwa artefak zip yang disebarkan ke akun Anda dipercaya untuk digunakan. Anda dapat menyertakan proses di atas dalam pipeline CI/CD Anda dan mengharuskan semua fungsi memiliki konfigurasi penandatanganan kode yang dilampirkan menggunakan teknik yang diuraikan dalam topik sebelumnya. Dengan menggunakan penandatanganan kode dengan penerapan fungsi Lambda, Anda mencegah pelaku jahat yang mungkin mendapatkan kredensi untuk membuat atau memperbarui fungsi agar tidak menyuntikkan kode berbahaya ke dalam fungsi Anda.