

# コード署名を使用して Lambda でコードの整合性を検証する
<a name="configuration-codesigning"></a>

コード署名を使用すると、信頼できるコードのみが Lambda 関数にデプロイされるようにできます。AWS Signer を使用すると、関数のデジタル署名付きコードパッケージを作成できます。[コード署名の設定を関数に追加](configuration-codesigning-create.md)すると、Lambda はすべての新しいコードデプロイが信頼できるソースによって署名されていることを検証します。コード署名の検証チェックはデプロイ時に実行されるため、関数の実行に影響しません。

**重要**  
コード署名の設定では、署名なしコードの新規デプロイのみが防止されます。署名なしコードがある既存の関数にコード署名の設定を追加した場合、そのコードは新しいコードパッケージをデプロイするまで実行され続けます。

関数に対してコード署名を有効にする場合、関数に追加するすべての[レイヤー](chapter-layers.md)も許可された署名プロファイルによって署名されている必要があります。

AWS Lambda での AWS Signer またはコード署名の使用には、追加料金は発生しません。

## 署名の検証
<a name="config-codesigning-valid"></a>

ユーザーが署名付きコードパッケージを関数にデプロイすると、Lambda により次の検証チェックが実行されます。

1. **整合性**: コードパッケージが、署名されてから変更されていないことを検証します。Lambda が、パッケージのハッシュと署名からのハッシュを比較します。

1. **有効期限**: コードパッケージの署名が有効期限切れになっていないことを検証します。

1. **不一致**: 許可された署名プロファイルによってコードパッケージが署名されていることを検証します。

1. **失効**: コードパッケージの署名が取り消されていないことを検証します。

コード署名の設定を作成するときは、[UntrustedArtifactOnDeployment](https://docs.aws.amazon.com/lambda/latest/api/API_CodeSigningPolicies.html#lambda-Type-CodeSigningPolicies-UntrustedArtifactOnDeployment) パラメータを使用して、有効期限、不一致、または失効のチェックが失敗した場合に Lambda がどのように対応するかを指定できます。以下のいずれかのアクションを選択できます。
+ `Warn`: これはデフォルトの設定です。Lambda はコードパッケージのデプロイを許可しますが、警告を発行します。Lambda は、新しい Amazon CloudWatch メトリクス (`SignatureValidationErrors`) を発行し、警告を CloudTrail ログに保存します。
+ `Enforce`: Lambda は (`Warn` アクションと同じように) 警告を発行し、コードパッケージのデプロイをブロックします。

**Topics**
+ [署名の検証](#config-codesigning-valid)
+ [Lambda のコード署名の設定を作成する](configuration-codesigning-create.md)
+ [Lambda コード署名設定用の IAM ポリシーの設定](config-codesigning-policies.md)
+ [コード署名設定でのタグの使用](tags-csc.md)