

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

# でのシークレットの暗号化と復号 AWS Secrets Manager
<a name="security-encryption"></a>

Secrets Manager は、エンベロープ暗号化を AWS KMS [キー](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#master_keys)および[データキー](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#data-keys)と共に使用して各シークレット値を保護します。シークレットのシークレット値が変更されるたびに、Secrets Manager はそれを保護するために新しいデータキーを AWS KMS からリクエストします。データキーは、KMS キーの下で暗号化され、シークレットのメタデータに保存されます。シークレットを復号するために、Secrets Manager はまず KMS キーを使用して暗号化されたデータキーを復号します AWS KMS。

Secrets Manager は、シークレット値を直接暗号化するとき、KMS キーを使用しません。代わりに、KMS キーを使用して 256 ビット Advanced Encryption Standard (AES) 対称型[データキー](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#data-keys)を生成し、このデータキーを使用してシークレット値を暗号化します。Secrets Manager は、プレーンテキストのデータキーを使用して外部でシークレット値を暗号化し AWS KMS、メモリから削除します。また、データキーの暗号化されたコピーを、シークレットのメタデータに保存します。

**Topics**
+ [AWS KMS キーの選択](#security-encryption-choose-key)
+ [暗号化されるもの](#secret-value-encrypted)
+ [プロセスの暗号化と復号](#security-encryption-encrypt)
+ [KMS キーのアクセス許可](#security-encryption-authz)
+ [Secrets Manager による KMS キーの使用方法](#security-encryption-using-cmk)
+ [AWS マネージドキー (`aws/secretsmanager`) のキーポリシー](#security-encryption-policies)
+ [Secrets Manager の暗号化コンテキスト](#security-encryption-encryption-context)
+ [Secrets Manager の とのやり取りをモニタリングする AWS KMS](#security-encryption-logs)

## AWS KMS キーの選択
<a name="security-encryption-choose-key"></a>

シークレットを作成するときは、 AWS アカウント および リージョンで任意の対称暗号化カスタマーマネージドキーを選択するか、Secrets Manager () AWS マネージドキー の を使用できます`aws/secretsmanager`。を選択し AWS マネージドキー `aws/secretsmanager`、まだ存在しない場合は、Secrets Manager によって作成され、シークレットに関連付けられます。アカウントの各シークレットに、同じ KMS キーまたは異なる KMS キーを使用できます。異なる KMS キーを使用して、シークレットのグループのキーにカスタムアクセス許可を設定したり、それらのキーの特定の操作を監査したりする場合があります。Secrets Manager は、[対称型 暗号化KMS キー](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#symmetric-cmks)のみをサポートします。[外部キーストア](https://docs.aws.amazon.com/kms/latest/developerguide/keystore-external.html)で KMS キーを使用する場合、要求が AWSの外に移動する必要があるため、KMS キーの暗号化操作に時間がかかり、信頼性と耐久性が低下する可能性があります。

シークレットの暗号化キーの変更の詳細については、「[AWS Secrets Manager シークレットの暗号化キーを変更する](manage_update-encryption-key.md)」を参照してください。

暗号化キーを変更すると、Secrets Manager は新しいキーを使用して、`AWSCURRENT`、`AWSPENDING`、`AWSPREVIOUS` バージョンを再暗号化します。シークレットからロックアウトされないように、Secrets Manager は既存のすべてのバージョンを以前のキーで暗号化したままの状態にします。つまり、`AWSCURRENT`、`AWSPENDING`、`AWSPREVIOUS` のバージョンを以前のキーまたは新しいキーで復号化できます。以前のキーに対する `kms:Decrypt` アクセス許可がない場合、暗号化キーを変更すると、Secrets Manager はシークレットバージョンを復号して再暗号化することはできません。この場合、既存のバージョンは再暗号化されません。

`AWSCURRENT` を新しい暗号化キーでのみ復号できるようにするには、新しいキーを使用してシークレットの新しいバージョンを作成します。次に、`AWSCURRENT` シークレットのバージョンを復号するには、新しいキーに対するアクセス許可が必要です。

へのアクセス AWS マネージドキー `aws/secretsmanager`許可を拒否し、シークレットがカスタマーマネージドキーで暗号化されるように要求できます。詳細については、「[例: シークレットを暗号化するための特定の AWS KMS キーを拒否する](auth-and-access_iam-policies.md#auth-and-access_examples_kmskey)」を参照してください。

シークレットに関連付けられている KMS キーを検索するには、コンソールにシークレットを表示するか、[ListSecrets](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_ListSecrets.html) または [DescribeSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_DescribeSecret.html) を呼び出します。シークレットが Secrets Manager (`aws/secretsmanager`) AWS マネージドキー の に関連付けられている場合、これらのオペレーションは KMS キー識別子を返しません。

## 暗号化されるもの
<a name="secret-value-encrypted"></a>

Secrets Manager ではシークレット値を暗号化しますが、次の値は暗号化しません。
+ シークレットの名前と説明
+ ローテーション設定
+ シークレットに関連付けられた KMS キーの ARN
+ アタッチされた AWS タグ 

## プロセスの暗号化と復号
<a name="security-encryption-encrypt"></a>

シークレットのシークレット値を暗号化するには、Secrets Manager は次のプロセスを使用します。

1. Secrets Manager は、シークレットの KMS キーの ID と 256 ビット AES 対称キーのリクエストを使用して、 AWS KMS [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) オペレーションを呼び出します。 は、プレーンテキストのデータキーと、KMS キーで暗号化されたそのデータキーのコピー AWS KMS を返します。

1. Secrets Manager は、プレーンテキストのデータキーと Advanced Encryption Standard (AES) アルゴリズムを使用して、外部でシークレット値を暗号化します AWS KMS。次に、使用後可能な限り早く、メモリからプレーンテキストキーが削除されます。

1. Secrets Manager は、暗号化されたデータキーをシークレットのメタデータに保存するので、シークレット値を復号化できます。ただし、Secrets Manager API のいずれも、暗号化されたシークレットまたは暗号化されたデータキーを返しません。

暗号化されたシークレット値を復号するには:

1.  Secrets Manager は、 AWS KMS [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) オペレーションを呼び出し、暗号化されたデータキーを渡します。

1. AWS KMS はシークレットの KMS キーを使用してデータキーを復号します。プレーンテキストのデータキーを返します。

1. Secrets Manager は、プレーンテキストのデータキーを使用してシークレット値を復号化します。次に、可能な限り早く、メモリからデータキーが削除されます。

## KMS キーのアクセス許可
<a name="security-encryption-authz"></a>

Secrets Manager が暗号化オペレーションで KMS キーを使用する場合、シークレット値をアクセスまたは更新しているユーザーの代わりに動作します。IAM ポリシーまたはキーポリシーでアクセス許可を付与できます。次の Secrets Manager オペレーションにはアクセス AWS KMS 許可が必要です。
+ [CreateSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_CreateSecret.html)
+ [GetSecretValue](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html)
+ [PutSecretValue](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_PutSecretValue.html)
+ [UpdateSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_UpdateSecret.html)
+ [ReplicateSecretToRegions](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_ReplicateSecretToRegions.html)

Secrets Manager で発生したリクエストにのみ KMS キーを使用するには、アクセス許可ポリシーで [kms:ViaService 条件キー](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-via-service)を `secretsmanager.<Region>.amazonaws.com` 値で使用します。

また、暗号化オペレーションに KMS キーを使用する条件として、[暗号化コンテキスト](https://docs.aws.amazon.com/kms/latest/developerguide/services-secrets-manager.html#asm-encryption-context)でキーまたは値を使用することもできます。例えば、IAM またはキーポリシードキュメントで[文字列条件演算子](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String)を使用したり、[制約許可](https://docs.aws.amazon.com/kms/latest/APIReference/API_GrantConstraints.html)を与えられます。KMS キー付与の伝播には、最大 5 分かかります。詳細については、「[CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)」を参照してください。

## Secrets Manager による KMS キーの使用方法
<a name="security-encryption-using-cmk"></a>

Secrets Manager は、KMS キーを使用して次の AWS KMS オペレーションを呼び出します。

**GenerateDataKey**  
Secrets Manager は、次の Secrets Manager オペレーションに応答して、 AWS KMS [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) オペレーションを呼び出します。  
+ [CreateSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_CreateSecret.html) — 新しいシークレットにシークレット値が含まれている場合、Secrets Manager は、それを暗号化するための新しいデータキーを要求します。
+ [PutSecretValue](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_PutSecretValue.html) — Secrets Manager は、指定されたシークレット値を暗号化する新しいデータキーを要求します。
+ [ReplicateSecretToRegions](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_ReplicateSecretToRegions.html) – レプリケートされたシークレットを暗号化するために、Secrets Manager がレプリカリージョン内の KMS キーのデータキーをリクエストします。
+ [UpdateSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_UpdateSecret.html) — シークレット値または KMS キーを変更した場合、Secrets Manager は新しいシークレット値を暗号化するための新しいデータキーを要求します。
 [rotateSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_RotateSecret.html) 操作は、シークレット値を変更しないため、`GenerateDataKey`を呼び出しません。ただし、`RotateSecret` がシークレット値を変更する Lambda 関数を呼び出す場合、`PutSecretValue` オペレーションの呼び出しにより、`GenerateDataKey` リクエストがトリガーされます。

**Decrypt**  
Secrets Manager は、次の Secrets Manager オペレーションに応答して [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) オペレーションを呼び出します。  
+ [GetSecretValue](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html) と [BatchGetSecretValue](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_BatchGetSecretValue.html) — Secrets Manager は、呼び出し元に返す前にシークレット値を復号化します。暗号化されたシークレット値を復号するために、Secrets Manager は AWS KMS [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) オペレーションを呼び出してシークレット内の暗号化されたデータキーを復号します。次に、プレーンテキストのデータキーを使って、暗号化されたシークレット値を復号します。バッチコマンドの場合、Secrets Manager は復号化されたキーを再利用できるため、すべての呼び出しが `Decrypt` リクエストにつながるわけではありません。
+ [PutSecretValue](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_PutSecretValue.html) および [UpdateSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_UpdateSecret.html) — ほとんどの `PutSecretValue` および `UpdateSecret` 要求は `Decrypt` 操作をトリガーしません。ただし、`PutSecretValue` または `UpdateSecret` 要求がシークレットの既存のバージョンでシークレット値を変更しようとすると、Secrets Manager は既存のシークレット値を復号化し、リクエスト内のシークレット値と比較して、それらが同じであることを確認します。このアクションは、Secrets Manager の操作が冪等であることを保証します。暗号化されたシークレット値を復号するために、Secrets Manager は AWS KMS [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) オペレーションを呼び出してシークレット内の暗号化されたデータキーを復号します。次に、プレーンテキストのデータキーを使って、暗号化されたシークレット値を復号します。
+ [ReplicateSecretToRegions](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_ReplicateSecretToRegions.html) – Secrets Manager は、レプリカリージョンにある新しい KMS キーを使用してシークレット値を再暗号化する前に、まずプライマリリージョンのシークレット値を復号します。

**暗号化**  
Secrets Manager は、次の Secrets Manager オペレーションに応答して [Encrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html) オペレーションを呼び出します。  
+ [UpdateSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_UpdateSecret.html) – KMS キーを変更すると、Secrets Manager は `AWSCURRENT`、`AWSPREVIOUS`、`AWSPENDING` およびシークレットバージョンを保護するデータキーを新しいキーで再暗号化します。

**DescribeKey**  
Secrets Manager は、[DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) オペレーションを呼び出して、Secrets Manager コンソールでシークレットを作成または編集するときに KMS キーを一覧表示するかどうかを決定します。

**KMS キーへのアクセスの検証**  
シークレットに関連付けられている KMS キーを確立または変更すると、Secrets Manager は、指定された KMS キーを使用して `GenerateDataKey` および `Decrypt` オペレーションを呼び出します。これらの呼び出しでは、呼び出し元に、これらのオペレーションで KMS キーを使用するアクセス許可があることが確認されます。Secrets Manager は、これらの操作の結果を破棄します。暗号化操作ではそれらを使用しません。  
これらのリクエストの `SecretVersionId` キーの[暗号化コンテキスト](https://docs.aws.amazon.com/kms/latest/developerguide/services-secrets-manager.html#asm-encryption-context)の値は `RequestToValidateKeyAccess` であるため、この検証呼び出しを識別できます。  
以前は、Secrets Manager の検証呼び出しに暗号化コンテキストが含まれていませんでした。古い AWS CloudTrail ログでは、暗号化コンテキストのない呼び出しが見つかる場合があります。

## AWS マネージドキー (`aws/secretsmanager`) のキーポリシー
<a name="security-encryption-policies"></a>

 AWS マネージドキー Secrets Manager (`aws/secretsmanager`) の のキーポリシーは、Secrets Manager がユーザーに代わってリクエストを行う場合にのみ、指定されたオペレーションに KMS キーを使用するアクセス許可をユーザーに付与します。このキーポリシーでは、ユーザーが KMS キーを直接使用することは許可されません。

このキーポリシーは、すべての [AWS マネージドキー](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#master_keys) のポリシーと同様に、サービスによって確立されます。キーポリシーは変更できませんが、いつでも表示できます。詳細については、「[Viewing a key policy](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-viewing.html)」を参照してください。

このキーポリシーのポリシーステートメントには次の効果があります
+ アカウントのユーザーが暗号化オペレーションに KMS キーを使用できるようにするのは、リクエストがSecrets Manager から送信される場合のみです。`kms:ViaService` 条件キーで、この制限を適用します。
+  AWS アカウントが KMS キープロパティを表示し、許可を取り消すことをユーザーに許可する IAM ポリシーを作成できるようにします。
+ Secrets Manager は、KMS キーへのアクセスを取得するときは許可を使用しませんが、このポリシーは、ユーザーに代わって Secrets Manager が KMS キーの[許可を作成](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html)すること、および、アカウントが KMS キーの使用を Secrets Manager に許可するための[許可を取り消す](https://docs.aws.amazon.com/kms/latest/APIReference/API_RevokeGrant.html)ことを、許可します。これらは、 のポリシードキュメントの標準要素です AWS マネージドキー。

以下は、Secrets Manager の例 AWS マネージドキー のキーポリシーです。

------
#### [ JSON ]

****  

```
{
  "Id": "auto-secretsmanager-2",
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "Allow access through AWS Secrets Manager for all principals in the account that are authorized to use AWS Secrets Manager",
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "*"
        ]
      },
      "Action": [
        "kms:Encrypt",
        "kms:Decrypt",
        "kms:ReEncrypt*",
        "kms:CreateGrant",
        "kms:DescribeKey"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "kms:CallerAccount": "111122223333",
          "kms:ViaService": "secretsmanager.us-west-2.amazonaws.com"
        }
      }
    },
    {
      "Sid": "Allow access through AWS Secrets Manager for all principals in the account that are authorized to use AWS Secrets Manager",
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "*"
        ]
      },
      "Action": "kms:GenerateDataKey*",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "kms:CallerAccount": "111122223333"
        },
        "StringLike": {
          "kms:ViaService": "secretsmanager.us-west-2.amazonaws.com"
        }
      }
    },
    {
      "Sid": "Allow direct access to key metadata to the account",
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam::111122223333:root"
        ]
      },
      "Action": [
        "kms:Describe*",
        "kms:Get*",
        "kms:List*",
        "kms:RevokeGrant"
      ],
      "Resource": "*"
    }
  ]
}
```

------

## Secrets Manager の暗号化コンテキスト
<a name="security-encryption-encryption-context"></a>

[暗号化コンテキスト](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context)は、シークレットデータを含まない一連のキーと値のペアです。データを暗号化するリクエストに暗号化コンテキストを含めると、 は暗号化コンテキストを暗号化されたデータに AWS KMS 暗号化バインドします。データを復号するには、同じ暗号化コンテキストに渡す必要があります。

への [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) および [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) リクエストでは AWS KMS、Secrets Manager は、次の例に示すように、シークレットとそのバージョンを識別する 2 つの名前と値のペアを持つ暗号化コンテキストを使用します。名前は変わりませんが、組み合わされた暗号化コンテキストの値は、シークレット値ごとに異なります。

```
"encryptionContext": {
    "SecretARN": "arn:aws:secretsmanager:us-east-2:111122223333:secret:test-secret-a1b2c3",
    "SecretVersionId": "EXAMPLE1-90ab-cdef-fedc-ba987SECRET1"
}
```

暗号化コンテキストを使用して、[AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) や Amazon CloudWatch Logs などの監査レコードやログで、ポリシーや許可の認可の条件として、これらの暗号化オペレーションを識別できます。

Secrets Manager の暗号化コンテキストは、2 つの名前と値のペアで構成されます。
+ **SecretArn** – 最初の名前と値のペアがシークレットを識別します。キーは、`SecretARN` です。値はシークレットの Amazon リソースネーム (ARN) です。

  ```
  "SecretARN": "ARN of an Secrets Manager secret"
  ```

  例えば、シークレットの ARN が `arn:aws:secretsmanager:us-east-2:111122223333:secret:test-secret-a1b2c3` である場合 、暗号化コンテキストには次のペアが含まれます。

  ```
  "SecretARN": "arn:aws:secretsmanager:us-east-2:111122223333:secret:test-secret-a1b2c3"
  ```
+ **SecretVersionID** – 2 番目の名前と値のペアは、シークレットのバージョンを識別します。キーは、`SecretVersionId` です。値は、バージョン ID です。

  ```
  "SecretVersionId": "<version-id>"
  ```

  例えば、シークレットのバージョン ID が `EXAMPLE1-90ab-cdef-fedc-ba987SECRET1` である場合、暗号化コンテキストには次のペアが含まれます。

  ```
  "SecretVersionId": "EXAMPLE1-90ab-cdef-fedc-ba987SECRET1"
  ```

シークレットの KMS キーを確立または変更すると、Secrets Manager は [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) および [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) リクエストを に送信 AWS KMS して、呼び出し元がこれらのオペレーションに KMS キーを使用するアクセス許可を持っていることを確認します。レスポンスは廃棄され、シークレット値では使用されません。

これらの検証リクエストでは、`SecretARN` の値がシークレットの実際の ARN となりますが、`SecretVersionId` 値は、次の暗号化コンテキストの例に示すように `RequestToValidateKeyAccess` になります。この特殊な値は、ログと監査証跡で検証リクエストを識別するうえで役立ちます。

```
"encryptionContext": {
    "SecretARN": "arn:aws:secretsmanager:us-east-2:111122223333:secret:test-secret-a1b2c3",
    "SecretVersionId": "RequestToValidateKeyAccess"
}
```

**注記**  
以前は、Secrets Manager の検証要求に暗号化コンテキストが含まれていませんでした。古い AWS CloudTrail ログでは、暗号化コンテキストのない呼び出しが見つかる場合があります。

## Secrets Manager の とのやり取りをモニタリングする AWS KMS
<a name="security-encryption-logs"></a>

 AWS CloudTrail および Amazon CloudWatch Logs を使用して、Secrets Manager が AWS KMS ユーザーに代わって に送信するリクエストを追跡できます。シークレットの使用のモニタリングについては、「[AWS Secrets Manager シークレットのモニタリング](monitoring.md)」を参照してください。

**GenerateDataKey**  
シークレットでシークレット値を作成または変更すると、Secrets Manager はシークレットの KMS キー AWS KMS を指定する *[GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)* リクエストを に送信します。  
`GenerateDataKey` 演算を記録するイベントは、次のようなサンプルイベントになります。リクエストは `secretsmanager.amazonaws.com` によって起動されます。このパラメータには、シークレットの KMS キーの Amazon リソースネーム (ARN)、256 ビットキーを要求するキー識別子、およびシークレットとバージョンを識別する[暗号化コンテキスト](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context)が含まれます。  

```
{
    "eventVersion": "1.05",
    "userIdentity": {
        "type": "IAMUser",
        "principalId": "AROAIGDTESTANDEXAMPLE:user01",
        "arn": "arn:aws:sts::111122223333:assumed-role/Admin/user01",
        "accountId": "111122223333",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
        "sessionContext": {
            "attributes": {
                "mfaAuthenticated": "false",
                "creationDate": "2018-05-31T23:23:41Z"
            }
        },
        "invokedBy": "secretsmanager.amazonaws.com"
    },
    "eventTime": "2018-05-31T23:23:41Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "GenerateDataKey",
    "awsRegion": "us-east-2",
    "sourceIPAddress": "secretsmanager.amazonaws.com",
    "userAgent": "secretsmanager.amazonaws.com",
    "requestParameters": {
        "keyId": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
        "keySpec": "AES_256",
        "encryptionContext": {
            "SecretARN": "arn:aws:secretsmanager:us-east-2:111122223333:secret:test-secret-a1b2c3",
            "SecretVersionId": "EXAMPLE1-90ab-cdef-fedc-ba987SECRET1"
        }
    },
    "responseElements": null,
    "requestID": "a7d4dd6f-6529-11e8-9881-67744a270888",
    "eventID": "af7476b6-62d7-42c2-bc02-5ce86c21ed36",
    "readOnly": true,
    "resources": [
        {
            "ARN": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
            "accountId": "111122223333",
            "type": "AWS::KMS::Key"
        }
    ],
    "eventType": "AwsApiCall",
    "recipientAccountId": "111122223333"
}
```

**Decrypt**  
シークレットのシークレット値を取得または変更すると、Secrets Manager は [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) リクエストを に送信 AWS KMS して、暗号化されたデータキーを復号します。バッチコマンドの場合、Secrets Manager は復号化されたキーを再利用できるため、すべての呼び出しが `Decrypt` リクエストにつながるわけではありません。  
`Decrypt` 演算を記録するイベントは、次のようなサンプルイベントになります。ユーザーは、テーブルにアクセスする AWS アカウントのプリンシパルです。パラメータには、暗号化されたテーブルキー (暗号化テキスト BLOB として) と、テーブルと AWS アカウントを識別する[暗号化コンテキスト](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context)が含まれます。 は、暗号化テキストから KMS キーの ID AWS KMS を取得します。  

```
{
    "eventVersion": "1.05",
    "userIdentity": {
        "type": "IAMUser",
        "principalId": "AROAIGDTESTANDEXAMPLE:user01",
        "arn": "arn:aws:sts::111122223333:assumed-role/Admin/user01",
        "accountId": "111122223333",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
        "sessionContext": {
            "attributes": {
                "mfaAuthenticated": "false",
                "creationDate": "2018-05-31T23:36:09Z"
            }
        },
        "invokedBy": "secretsmanager.amazonaws.com"
    },
    "eventTime": "2018-05-31T23:36:09Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "Decrypt",
    "awsRegion": "us-east-2",
    "sourceIPAddress": "secretsmanager.amazonaws.com",
    "userAgent": "secretsmanager.amazonaws.com",
    "requestParameters": {
        "encryptionContext": {
            "SecretARN": "arn:aws:secretsmanager:us-east-2:111122223333:secret:test-secret-a1b2c3",
            "SecretVersionId": "EXAMPLE1-90ab-cdef-fedc-ba987SECRET1"
        }
    },
    "responseElements": null,
    "requestID": "658c6a08-652b-11e8-a6d4-ffee2046048a",
    "eventID": "f333ec5c-7fc1-46b1-b985-cbda13719611",
    "readOnly": true,
    "resources": [
        {
            "ARN": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
            "accountId": "111122223333",
            "type": "AWS::KMS::Key"
        }
    ],
    "eventType": "AwsApiCall",
    "recipientAccountId": "111122223333"
}
```

**暗号化**  
シークレットに関連付けられた KMS キーを変更すると、Secrets Manager は [Encrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html) リクエストを に送信 AWS KMS して`AWSCURRENT`、、`AWSPREVIOUS`、および シーク`AWSPENDING`レットバージョンを新しいキーで再暗号化します。シークレットを別のリージョンにレプリケートすると、Secrets Manager は [Encrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html) リクエストも  AWS KMS に送信します。  
`Encrypt` 演算を記録するイベントは、次のようなサンプルイベントになります。ユーザーは、テーブルにアクセスする AWS アカウントのプリンシパルです。  

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "IAMUser",
        "principalId": "AROAIGDTESTANDEXAMPLE:user01",
        "arn": "arn:aws:sts::111122223333:assumed-role/Admin/user01",
        "accountId": "111122223333",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
        "sessionContext": {
            "attributes": {
                "creationDate": "2023-06-09T18:11:34Z",
                "mfaAuthenticated": "false"
            }
        },
        "invokedBy": "secretsmanager.amazonaws.com"
    },
    "eventTime": "2023-06-09T18:11:34Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "Encrypt",
    "awsRegion": "us-east-2",
    "sourceIPAddress": "secretsmanager.amazonaws.com",
    "userAgent": "secretsmanager.amazonaws.com",
    "requestParameters": {
        "keyId": "arn:aws:kms:us-east-2:111122223333:key/EXAMPLE1-f1c8-4dce-8777-aa071ddefdcc",
        "encryptionAlgorithm": "SYMMETRIC_DEFAULT",
        "encryptionContext": {
            "SecretARN": "arn:aws:secretsmanager:us-east-2:111122223333:secret:ChangeKeyTest-5yKnKS",
            "SecretVersionId": "EXAMPLE1-5c55-4d7c-9277-1b79a5e8bc50"
        }
    },
    "responseElements": null,
    "requestID": "129bd54c-1975-4c00-9b03-f79f90e61d60",
    "eventID": "f7d9ff39-15ab-47d8-b94c-56586de4ab68",
    "readOnly": true,
    "resources": [
        {
            "accountId": "AWS Internal",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-west-2:111122223333:key/EXAMPLE1-f1c8-4dce-8777-aa071ddefdcc"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "111122223333",
    "eventCategory": "Management"
}
```