

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

# キーストアアクションを設定する
<a name="keystore-actions"></a>

キーストアアクションは、ユーザーが実行できるオペレーションと、 AWS KMS その階層キーリングがキーストアに許可リストされている KMS キーをどのように使用するかを決定します。 AWS Database Encryption SDK は、次のキーストアアクション設定をサポートしています。

**静的**  
キーストアを静的に設定すると、キーストアは、キーストアアクションを設定する`kmsConfiguration`ときに で指定した KMS キー ARN に関連付けられた KMS キーのみを使用できます。ブランチキーの作成、バージョニング、または取得時に別の KMS キー ARN が発生した場合、例外がスローされます。  
でマルチリージョン KMS キーを指定できますが`kmsConfiguration`、リージョンを含むキーの ARN 全体が KMS キーから派生したブランチキーに保持されます。別のリージョンでキーを指定することはできません。値を一致させるには、まったく同じマルチリージョンキーを指定する必要があります。  
キーストアアクションを静的に設定すると、使用オペレーション (`GetActiveBranchKey`、`GetBranchKeyVersion`、`GetBeaconKey`) と管理オペレーション (`CreateKey` および ) を実行できます`VersionKey`。 `CreateKey`は、キーストア許可リストに新しい KMS キー ARN を追加できる特権オペレーションです。この KMS キーは、新しいアクティブなブランチキーを作成できます。KMS キーがキーストアに追加されると、削除できないため、このオペレーションへのアクセスを制限することをお勧めします。

**発見**  
検出用にキーストアアクションを設定すると、キーストアはキーストアで許可リストに登録されている任意の AWS KMS key ARN を使用できます。ただし、マルチリージョン KMS キーが発生し、キーの ARN のリージョンが使用されている AWS KMS クライアントのリージョンと一致しない場合、例外がスローされます。  
検出用にキーストアを設定する場合、 `CreateKey`や などの管理オペレーションを実行することはできません`VersionKey`。暗号化、復号、署名、検証オペレーションを有効にする使用オペレーションのみを実行できます。詳細については、「[最小特権のアクセス許可の実装](keystore-least-privilege.md)」を参照してください。

## キーストアアクションを設定する
<a name="config-keystore-actions"></a>

キーストアアクションを設定する前に、次の前提条件を満たしていることを確認してください。
+ 実行する必要があるオペレーションを決定します。詳細については、「[最小特権のアクセス許可の実装](keystore-least-privilege.md)」を参照してください。
+ 論理キーストア名を選択する

  DynamoDB テーブル名と論理キーストア名の間には one-to-one のマッピングが必要です。論理キーストア名は、DynamoDB 復元オペレーションを簡素化するために、テーブルに保存されているすべてのデータに暗号的にバインドされます。最初のユーザーが最初に定義した後は変更できません。キーストアアクションでは、常に同じ論理キーストア名を指定する必要があります。詳細については、「[logical key store name](create-keystore.md#logical-key-store-name)」を参照してください。

### 静的設定
<a name="static-keystore"></a>

次の例では、キーストアアクションを静的に設定します。キーストアとして機能する DynamoDB テーブルの名前、キーストアの論理名、対称暗号化 KMS キーを識別する KMS キー ARN を指定する必要があります。

**注記**  
キーストアサービスを静的に設定するときは、指定した KMS キー ARN を慎重に検討してください。`CreateKey` オペレーションは、KMS キー ARN をブランチキーストアの許可リストに追加します。KMS キーがブランチキーストアに追加されると、削除することはできません。

------
#### [ Java ]

```
final KeyStore keystore = KeyStore.builder().KeyStoreConfig(
	                 KeyStoreConfig.builder()
	                         .ddbClient(DynamoDbClient.create())
	                         .ddbTableName(keyStoreName)
	                         .logicalKeyStoreName(logicalKeyStoreName)
	                         .kmsClient(KmsClient.create())
	                         .kmsConfiguration(KMSConfiguration.builder()
	                                 .kmsKeyArn(kmsKeyArn)
	                                 .build())
	                         .build()).build();
```

------
#### [ C\$1 / .NET ]

```
var kmsConfig = new KMSConfiguration { KmsKeyArn = kmsKeyArn };
	 var keystoreConfig = new KeyStoreConfig
	 {
	     KmsClient = new AmazonKeyManagementServiceClient(),
	     KmsConfiguration = kmsConfig,
	     DdbTableName = keyStoreName,
	     DdbClient = new AmazonDynamoDBClient(),
	     LogicalKeyStoreName = logicalKeyStoreName
	 };
	 var keystore = new KeyStore(keystoreConfig);
```

------
#### [ Rust ]

```
let sdk_config = aws_config::load_defaults(aws_config::BehaviorVersion::latest()).await;
let key_store_config = KeyStoreConfig::builder()
    .kms_client(aws_sdk_kms::Client::new(&sdk_config))
    .ddb_client(aws_sdk_dynamodb::Client::new(&sdk_config))
    .ddb_table_name(key_store_name)
    .logical_key_store_name(logical_key_store_name)
    .kms_configuration(KmsConfiguration::KmsKeyArn(kms_key_arn.to_string()))
    .build()?;

let keystore = keystore_client::Client::from_conf(key_store_config)?;
```

------

### 検出の設定
<a name="discovery-keystore"></a>

次の の例では、検出用のキーストアアクションを設定します。キーストアとして機能する DynamoDB テーブルの名前と論理キーストア名を指定する必要があります。

------
#### [ Java ]

```
final KeyStore keystore = KeyStore.builder().KeyStoreConfig(
                 KeyStoreConfig.builder()
                         .ddbClient(DynamoDbClient.create())
                         .ddbTableName(keyStoreName)
                         .logicalKeyStoreName(logicalKeyStoreName)
                         .kmsClient(KmsClient.create())
                         .kmsConfiguration(KMSConfiguration.builder()
                                 .discovery(Discovery.builder().build())
                                 .build())
                         .build()).build();
```

------
#### [ C\$1 / .NET ]

```
var keystoreConfig = new KeyStoreConfig
 {
     KmsClient = new AmazonKeyManagementServiceClient(),
     KmsConfiguration = new KMSConfiguration {Discovery = new Discovery()},
     DdbTableName = keyStoreName,
     DdbClient = new AmazonDynamoDBClient(),
     LogicalKeyStoreName = logicalKeyStoreName
 };
 var keystore = new KeyStore(keystoreConfig);
```

------
#### [ Rust ]

```
let key_store_config = KeyStoreConfig::builder()
        .kms_client(kms_client)
        .ddb_client(ddb_client)
        .ddb_table_name(key_store_name)
        .logical_key_store_name(logical_key_store_name)
        .kms_configuration(KmsConfiguration::Discovery(Discovery::builder().build()?))
        .build()?;
```

------