翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS SAM アプリケーションのコード署名を設定する
信頼できるコードのみがデプロイされるようにするには、 AWS SAM を使用してサーバーレスアプリケーションでコード署名を有効にすることができます。コードに署名すると、署名後にコードが変更されず、信頼できるパブリッシャーから署名されたコードパッケージのみが Lambda 関数で実行されるようになります。これにより組織は、デプロイパイプラインにゲートキーパーコンポーネントを構築する負担から解放されます。
コード署名の詳細については、「AWS Lambda デベロッパーガイド」の「Lambda 関数のコード署名の設定」を参照してください。
サーバーレスアプリケーションのコード署名を設定する前に、 AWS Signer を使用して署名プロファイルを作成する必要があります。この署名プロファイルは、以下のタスクに使用します。
-
コード署名設定の作成 -
AWS::Lambda::CodeSigningConfig
リソースを宣言して、信頼できる発行元の署名プロファイルの指定と、検証チェックのためのポリシーアクションの設定を行います。このオブジェクトは、サーバーレス関数と同じ AWS SAM テンプレート、別の AWS SAM テンプレート、または AWS CloudFormation テンプレートで宣言できます。次に、AWS::Lambda::CodeSigningConfig
リソースの Amazon リソースネーム (ARN) で関数のCodeSigningConfigArn
プロパティを指定して、サーバーレス関数のコード署名を有効にします。 -
コードの署名 -
--signing-profiles
オプションを用いたsam package
またはsam deploy
コマンドを使用します。
注記
sam package
または sam
deploy
コマンドを使用したコードの署名が正常に行われるには、これらのコマンドで使用する Amazon S3 バケットでバージョニングが有効化されている必要があります。 AWS SAM が作成した Amazon S3 バケットを使用している場合、バージョニングは自動的に有効になります。Amazon S3 バケットのバージョニング、および提供する Amazon S3 バケットでバージョニングを有効化する手順の詳細については、Amazon Simple Storage Service ユーザーガイドの「S3 バケットでのバージョニングの使用」を参照してください。
サーバーレスアプリケーションをデプロイするときは、コード署名を有効にしたすべての関数に対して Lambda が検証チェックを実行します。Lambda は、これらの関数が依存するレイヤーにも検証チェックを実行します。Lambda の検証チェックの詳細については、AWS Lambda デベロッパーガイドの「署名の検証」を参照してください。
例
署名プロファイルの作成
署名プロファイルを作成するには、以下のコマンドを実行します。
aws signer put-signing-profile --platform-id "AWSLambda-SHA384-ECDSA" --profile-name
MySigningProfile
前のコマンドが成功すると、署名プロファイルARNが返されます。例:
{ "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
フィールドにはARN、コード署名設定を作成するときに使用する が含まれます。
コード署名設定の作成と関数のコード署名の有効化
次の AWS SAM テンプレート例では、AWS::Lambda::CodeSigningConfig
リソースを宣言し、Lambda 関数のコード署名を有効にします。この例では、信頼できるプロファイルが 1 つあり、署名チェックが失敗するとデプロイが拒否されます。
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"
コードの署名
コードは、アプリケーションをパッケージ化またはデプロイするときに署名できます。以下のコマンド例にあるように、sam package
または sam deploy
コマンドで --signing-profiles
オプションを指定します。
アプリケーションをパッケージ化するときの関数コードへの署名:
sam package --signing-profiles
HelloWorld=MySigningProfile
--s3-bucketamzn-s3-demo-bucket
--output-template-file packaged.yaml
アプリケーションをパッケージ化するときの関数コードと関数が依存するレイヤー両方への署名:
sam package --signing-profiles
HelloWorld=MySigningProfile MyLayer=MySigningProfile
--s3-bucketamzn-s3-demo-bucket
--output-template-file packaged.yaml
関数コードの署名と、署名後のデプロイの実行:
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
注記
sam package
または sam
deploy
コマンドを使用したコードの署名が正常に行われるには、これらのコマンドで使用する Amazon S3 バケットでバージョニングが有効化されている必要があります。 AWS SAM が作成した Amazon S3 バケットを使用している場合、バージョニングは自動的に有効になります。Amazon S3 バケットのバージョニング、および提供する Amazon S3 バケットでバージョニングを有効化する手順の詳細については、Amazon Simple Storage Service ユーザーガイドの「S3 バケットでのバージョニングの使用」を参照してください。
sam deploy --guided
での署名プロファイルの提供
コード署名で設定されたサーバーレスアプリケーションで sam deploy --guided
コマンドを実行すると、 はコード署名に使用する署名プロファイルを指定するように AWS SAM プロンプトします。sam deploy --guided
プロンプトの詳細については、sam deploy「」の「」を参照してください。 AWS SAM CLI コマンドリファレンス。