AWS SAM アプリケーションのコード署名の設定 - AWS Serverless Application Model

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS SAM アプリケーションのコード署名の設定

AWS SAM を使用して、サーバーレスアプリケーションでのコード署名を有効にして、信頼できるコードのみがデプロイされるようにすることができます。コード署名機能の詳細については、」Lambda 関数のコード署名の設定()AWS Lambda デベロッパーガイド

サーバーレスアプリケーションのコード署名を設定するには、AWS Signer を使用して署名プロファイルを作成する必要があります。この署名プロファイルは、次のタスクに使用します。

  1. コード署名の設定を作成する— 宣言するAWS::Lambda::CodeSigningConfigリソースを使用して、信頼できる発行元の署名プロファイルを指定し、検証チェックのポリシーアクションを設定します。このオブジェクトは、サーバーレス関数と同じ AWS SAM テンプレート、別の AWS SAM テンプレート、または AWS CloudFormation テンプレートで宣言できます。次に、サーバーレス関数のコード署名を有効にするには、CodeSigningConfigArnAmazon リソースネーム (ARN) 関数を使用するには、AWS::Lambda::CodeSigningConfigのリソース。

  2. コード署名コード— を使用するsam packageまたはsam deployコマンドを使用して--signing-profilesオプション。

注記

あなたのコードに正常に署名するには、sam packageまたはsam deployコマンドを使用するには、これらのコマンドで使用する Amazon S3 バケットのバージョン管理を有効にする必要があります。AWS SAM が作成する Amazon S3 バケットを使用している場合、バージョニングは自動的に有効になります。Amazon S3 バケットバージョニングの詳細と、指定した Amazon S3 バケットでのバージョニングを有効にする手順については、「」Amazon S3 バケットでのバージョニングの使用()Amazon Simple Storage Service 開発者ガイド

サーバーレスアプリケーションをデプロイすると、Lambda はコード署名を有効にしたすべての関数に対して検証チェックを実行します。Lambda は、これらの関数が依存しているレイヤーに対しても検証チェックを実行します。Lambda の検証チェックの詳細については、署名の検証()AWS Lambda デベロッパーガイド

Example

署名プロファイルの作成

署名プロファイルを作成するには、次のコマンドを実行します。

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"

コード署名コード

アプリケーションをパッケージ化またはデプロイするときに、コードに署名できます。[] を指定します。--signing-profilesオプションのいずれかでsam packageまたはsam deploy次のコマンドの例に示すようにコマンドを実行します。

アプリケーションをパッケージ化するときに関数コードに署名する:

sam package --signing-profiles HelloWorld=MySigningProfile --s3-bucket test-bucket --output-template-file packaged.yaml

アプリケーションをパッケージ化するときに、関数コードと関数が依存するレイヤーの両方に署名します。

sam package --signing-profiles HelloWorld=MySigningProfile MyLayer=MySigningProfile --s3-bucket test-bucket --output-template-file packaged.yaml

関数コードと Layer に署名し、デプロイメントを実行します。

sam deploy --signing-profiles HelloWorld=MySigningProfile MyLayer=MySigningProfile --s3-bucket test-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 S3 バケットでのバージョニングの使用()Amazon Simple Storage Service 開発者ガイド

署名プロファイルの提供sam deploy --guided

実行すると、sam deploy --guidedコマンドをコード署名で設定したサーバーレスアプリケーションとともに使用すると、AWS SAM はコード署名に使用する署名プロファイルの提供を要求します。の詳細sam deploy --guidedプロンプトの詳細については、「sam deployAWS SAM CLI コマンドリファレンスを参照してください。