Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Siapkan penandatanganan kode untuk AWS SAM aplikasi Anda
Untuk memastikan bahwa hanya kode tepercaya yang digunakan, Anda dapat menggunakan AWS SAM untuk mengaktifkan penandatanganan kode dengan aplikasi tanpa server Anda. Menandatangani kode membantu memastikan bahwa kode belum diubah sejak penandatanganan dan hanya paket kode yang ditandatangani dari penerbit tepercaya yang berjalan di fungsi Lambda Anda. Ini membantu membebaskan organisasi dari beban membangun komponen penjaga gerbang di jaringan pipa penyebaran mereka.
Untuk informasi selengkapnya tentang penandatanganan kode, lihat Mengonfigurasi penandatanganan kode untuk fungsi Lambda di Panduan AWS Lambda Pengembang.
Sebelum dapat mengonfigurasi penandatanganan kode untuk aplikasi tanpa server, Anda harus membuat profil penandatanganan menggunakan AWS Signer. Anda menggunakan profil penandatanganan ini untuk tugas-tugas berikut:
-
Membuat konfigurasi penandatanganan kode – Menyatakan sumber daya
AWS::Lambda::CodeSigningConfig
untuk menentukan profil penandatanganan penerbit tepercaya dan untuk mengatur tindakan kebijakan untuk pemeriksaan validasi. Anda dapat mendeklarasikan objek ini dalam AWS SAM template yang sama dengan fungsi tanpa server Anda, dalam template yang berbeda, atau dalam AWS SAM template. AWS CloudFormation Anda kemudian mengaktifkan penandatanganan kode untuk fungsi tanpa server dengan menentukanCodeSigningConfigArn
properti fungsi dengan Amazon Resource Name (ARN) sumber daya.AWS::Lambda::CodeSigningConfig
-
Menandatangani kode Anda – Gunakan perintah
sam package
atausam deploy
dengan opsi--signing-profiles
.
catatan
Agar kode Anda berhasil ditandatangani dengan perintah sam package
atau sam
deploy
, versioning untuk bucket Amazon S3 yang Anda gunakan harus diaktifkan dengan perintah ini. Jika Anda menggunakan Bucket Amazon S3 yang AWS SAM dibuat untuk Anda, pembuatan versi diaktifkan secara otomatis. Untuk informasi selengkapnya tentang pembuatan versi bucket Amazon S3 dan petunjuk untuk mengaktifkan pembuatan versi di bucket Amazon S3 yang Anda berikan, lihat Menggunakan pembuatan versi di bucket Amazon S3 di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.
Saat Anda men-deploy aplikasi nirserver, Lambda melakukan pemeriksaan validasi pada semua fungsi yang penandatanganan kodenya telah Anda aktifkan. Lambda juga melakukan pemeriksaan validasi pada setiap lapisan yang fungsi lambda-nya bergantung pada lapisan tersebut. Untuk informasi selengkapnya tentang pemeriksaan validasi Lambda, lihat Validasi tanda tangan di Panduan Developer AWS Lambda .
Contoh
Membuat profil penandatanganan
Untuk membuat profil penandatanganan, jalankan perintah berikut:
aws signer put-signing-profile --platform-id "AWSLambda-SHA384-ECDSA" --profile-name
MySigningProfile
Jika perintah sebelumnya berhasil, Anda melihat profil penandatanganan ARN dikembalikan. Sebagai contoh:
{ "arn": "arn:aws:signer:us-east-1:
111122223333
:/signing-profiles/MySigningProfile
", "profileVersion": "SAMPLEverx", "profileVersionArn": "arn:aws:signer:us-east-1:111122223333
:/signing-profiles/MySigningProfile
/SAMPLEverx" }
profileVersionArn
Bidang berisi yang akan ARN digunakan saat Anda membuat konfigurasi penandatanganan kode.
Membuat konfigurasi penandatanganan kode dan mengaktifkan penandatanganan kode untuk suatu fungsi
Contoh AWS SAM template berikut mendeklarasikan AWS::Lambda::CodeSigningConfig
sumber daya dan memungkinkan penandatanganan kode untuk fungsi Lambda. Dalam contoh ini, jika pemeriksaan tanda tangan gagal, akan ditemukan satu profil tepercaya, dan penolakan deployment.
Resources: HelloWorld: Type: AWS::Serverless::Function Properties: CodeUri: hello_world/ Handler: app.lambda_handler Runtime: python3.7 CodeSigningConfigArn: !Ref MySignedFunctionCodeSigningConfig MySignedFunctionCodeSigningConfig: Type: AWS::Lambda::CodeSigningConfig Properties: Description: "Code Signing for MySignedLambdaFunction" AllowedPublishers: SigningProfileVersionArns: -
MySigningProfile-profileVersionArn
CodeSigningPolicies: UntrustedArtifactOnDeployment: "Enforce"
Menandatangani kode Anda
Anda dapat menandatangani kode saat mengemas atau men-deploy aplikasi Anda. Tentukan opsi --signing-profiles
dengan perintah sam package
atau sam deploy
, seperti yang ditunjukkan pada contoh perintah berikut.
Menandatangani kode fungsi saat mengemas aplikasi Anda:
sam package --signing-profiles
HelloWorld=MySigningProfile
--s3-bucketamzn-s3-demo-bucket
--output-template-file packaged.yaml
Menandatangani kode fungsi dan lapisan tempat fungsi Anda bergantung, saat mengemas aplikasi Anda:
sam package --signing-profiles
HelloWorld=MySigningProfile MyLayer=MySigningProfile
--s3-bucketamzn-s3-demo-bucket
--output-template-file packaged.yaml
Menandatangani kode fungsi dan lapisan Anda, lalu melakukan deployment:
sam deploy --signing-profiles
HelloWorld=MySigningProfile MyLayer=MySigningProfile
--s3-bucketamzn-s3-demo-bucket
--template-file packaged.yaml --stack-name --region us-east-1 --capabilities CAPABILITY_IAM
catatan
Agar berhasil menandatangani kode Anda dengan perintah sam package
atau sam
deploy
, versioning untuk bucket Amazon S3 yang Anda gunakan harus diaktifkan dengan perintah ini. Jika Anda menggunakan Bucket Amazon S3 yang AWS SAM dibuat untuk Anda, pembuatan versi diaktifkan secara otomatis. Untuk informasi selengkapnya tentang pembuatan versi bucket Amazon S3 dan petunjuk untuk mengaktifkan pembuatan versi di bucket Amazon S3 yang Anda berikan, lihat Menggunakan pembuatan versi di bucket Amazon S3 di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.
Menyediakan profil penandatanganan dengan sam deploy --guided
Saat Anda menjalankan sam deploy --guided
perintah dengan aplikasi tanpa server yang dikonfigurasi dengan penandatanganan kode, AWS SAM meminta Anda untuk memberikan profil penandatanganan yang akan digunakan untuk penandatanganan kode. Untuk informasi selengkapnya tentang sam deploy --guided
petunjuk, lihat sam deploy di AWS SAM CLI referensi perintah.