翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS Lambda でのコード署名の設定
AWS Lambda でコード署名を使用すると、信頼できるコードのみを Lambda 関数で実行するようにできます。関数のコード署名を有効にすると、デプロイされたすべてのコードが Lambda によりチェックされ、コードパッケージが信頼できるソースによって署名されていることを確認できます。
注記
コンテナイメージとして定義された関数では、コード署名はサポートされません。
コードの整合性を検証するには、AWS Signer を使用して、関数とレイヤーのために、デジタル署名されたコードパッケージを作成します。ユーザーがコードパッケージのデプロイを試みると、そのデプロイが受け入られる前に、コードパッケージの検証チェックが Lambda により実行されます。コード署名の検証チェックはデプロイ時に実行されるため、関数の実行時には、パフォーマンスへの影響はありません。
AWS Signer を使用すると、署名プロファイルを作成することもできます。署名付きコードパッケージを作成するには、署名プロファイルを使用します。コードパッケージに署名できるユーザーを制御し、署名プロファイルを作成するには、AWS Identity and Access Management (IAM) を使用します。詳細については、AWS Signer デベロッパーガイドの「認証とアクセスコントロール」を参照してください。
関数でコード署名を有効にするには、コード署名の設定を作成し、その設定を関数にアタッチします。コード署名の設定では、許可済みの署名プロファイルのリストと、検証チェックが失敗した場合に実行するポリシーアクションを定義します。
Lambda のレイヤーは、関数のコードパッケージと同じ形式の、署名付きのコードパッケージに従います。コード署名が有効化された関数にユーザーがレイヤーを追加すると、そのレイヤーが許可された署名プロファイルによって署名されていることを Lambda がチェックします。関数に対してコード署名を有効にする場合、関数に追加されるすべてのレイヤーも、許可された署名プロファイルの 1 つによって署名されている必要があります。
IAM を使用して、コード署名の設定を作成できるユーザーを制御します。通常、このための権限は、特定の管理者ユーザーのみに付与します。さらに、コード署名が有効化された関数のみをデベロッパーが作成できるようにする IAM ポリシーを設定できます。
AWS CloudTrail への変更を記録するようにコード署名を構成できます。関数の成功したデプロイとブロックされたデプロイが、署名と検証チェックに関する情報とともに CloudTrail に記録されます。
関数のコード署名の設定には、Lambda コンソール、AWS Command Line Interface (AWS CLI)、AWS CloudFormation、AWS Serverless Application Model (AWS SAM) を使用します。
AWS での AWS Lambda Signer またはコード署名の使用には、追加料金は必要ありません。
セクション
署名の検証
ユーザーが署名付きコードパッケージを関数にデプロイすると、Lambda により次の検証チェックが実行されます。
-
整合性 — コードパッケージが、署名されてから変更されていないことを検証します。Lambda が、パッケージのハッシュと署名からのハッシュを比較します。
-
有効期限 – コードパッケージの署名が有効期限切れになっていないことを検証します。
-
不一致 – Lambda 関数用に許可された署名プロファイルのうちの 1 つでコードパッケージが署名されていることを検証します。署名が存在しない場合にも不一致が発生します。
-
失効 – コードパッケージの署名が無効でないことを検証します。
コード署名の設定で定義されている署名検証ポリシーによって、検証チェックが失敗した場合に、次のアクションのうちどれが Lambda により実行されるかが決定されます。
-
警告 — Lambda はコードパッケージのデプロイを許可しますが、警告を発行します。Lambda は、新しい Amazon CloudWatch メトリクスを発行し、警告を CloudTrail ログに保存します。
-
Enforce (強制) – Lambda は (警告アクションと同じように) 警告を発行し、コードパッケージのデプロイをブロックします。
有効期限、不一致、および失効の各検証チェックのためにポリシーを設定できます。整合性検証には、ポリシーを構成できないことに注意してください。整合性のチェックが失敗した場合は、Lambda がデプロイをブロックします。
構成の前提条件
Lambda 関数用のコード署名を設定する前に、AWS Signer を使用して次の操作を実行します。
-
1 つまたは複数の署名プロファイルを作成します。
-
署名プロファイルを使用して、関数の署名付きコードパッケージを作成します。
詳細については、AWS Signer デベロッパーガイドの 「署名プロファイルの (コンソールでの) 作成」を参照してください。
コード署名の設定を作成する
コード署名の設定では、許可された署名プロファイルと署名検証ポリシーのリストを定義します。
コード署名設定を (コンソールで) 作成するには、
-
Lambda コンソールの [Code signing configurations (コード署名設定)] ページ)
を開きます。 -
[Create configuration] (設定を作成) をクリックします。
-
[説明] に、その設定のための、分かりやすい名前を入力します。
-
[署名プロファイル] に、設定のための署名プロファイルを (最大 20 個まで) 追加します。
-
[署名プロファイルバージョンの ARN] から、使用するプロファイルバージョンの Amazon リソースネーム (ARN) を選択します。あるいは、そこに ARN を入力します。
-
署名プロファイルを追加するには、[署名プロファイルの追加] をクリックします。
-
-
[署名の検証ポリシー] で、[警告 ] または [強制] を選択します。
-
[Create configuration] (設定を作成) をクリックします。
コード署名の設定を更新する
コード署名の設定を更新すると、その設定がアタッチされている関数で行われる、将来のデプロイに対し内容が反映されます。
コード署名の設定を (コンソールで) 更新するには、
-
Lambda コンソールの [Code signing configurations (コード署名設定)] ページ)
を開きます。 -
更新するコード署名の設定を選択し、[編集] をクリックします。
-
[説明] に、その設定のための、分かりやすい名前を入力します。
-
[署名プロファイル] に、設定のための署名プロファイルを (最大 20 個まで) 追加します。
-
[署名プロファイルバージョンの ARN] から、使用するプロファイルバージョンの Amazon リソースネーム (ARN) を選択します。あるいは、そこに ARN を入力します。
-
署名プロファイルを追加するには、[署名プロファイルの追加] をクリックします。
-
-
[署名の検証ポリシー] で、[警告 ] または [強制] を選択します。
-
[Save changes] (変更の保存) をクリックします。
コード署名の設定を削除する
コード署名の設定を削除できるのは、その設定が、いずれの関数でも使用されていない場合のみです。
コード署名の設定を (コンソールで) 削除するには
-
Lambda コンソールの [Code signing configurations (コード署名設定)] ページ)
を開きます。 -
削除するコード署名の設定を選択し、[削除] をクリックします。
-
確認のために、もう一度 [削除] をクリックします。
関数のコード署名を有効化する
関数のコード署名を有効にするには、コード署名の設定を関数に関連付けます。
コード署名の設定を (コンソールで) 関数に関連付けるには
Lambda コンソールの [関数ページ]
を開きます。 -
コード署名を有効にする関数を選択します。
-
[Configuration] (設定) タブを開きます。
-
下にスクロールし、[コード署名] を選択します。
-
[編集] を選択します。
-
[コード署名の編集] で、対象の関数に関連付けるコード署名の設定を選択します。
-
[Save] を選択します。
IAM ポリシーの設定
コード署名 API オペレーションにアクセスする権限をユーザーに付与するには、1 つ以上のポリシーステートメントを、そのユーザーのポリシーにアタッチします。ユーザーポリシーの詳細については、「」を参照してくださいLambda のアイデンティティベースの IAM ポリシー
次に示すポリシーステートメントの例では、コード署名の設定を作成、更新、および取得するためのアクセス権限を付与しています。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:CreateCodeSigningConfig", "lambda:UpdateCodeSigningConfig", "lambda:GetCodeSigningConfig" ], "Resource": "*" } ] }
管理者は、CodeSigningConfigArn
条件キーを使用して、デベロッパーが関数を作成または更新する際に必要となる、コード署名の設定を指定できます。
次に示すポリシーステートメントの例では、関数を作成するための権限を付与しています。ポリシーステートメントには、許可されるコード署名設定を指定する lambda:CodeSigningConfigArn
条件を含めます。CodeSigningConfigArn
パラメータが欠如しているか、条件の値と一致しない場合、Lambda はすべての CreateFunction
API リクエストをブロックします。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowReferencingCodeSigningConfig", "Effect": "Allow", "Action": [ "lambda:CreateFunction", ], "Resource": "*", "Condition": { "StringEquals": { "lambda:CodeSigningConfigArn": “arn:aws:lambda:us-west-2:123456789012:code-signing-config:csc-0d4518bd353a0a7c6” } } } ] }
Lambda API を使用したコード署名の設定
AWS CLIまたは AWS SDK でコード署名の設定を管理するには、次の API オペレーションを使用します。
関数のためにコード署名の設定を管理するには、次の API オペレーションを使用します。