翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
キーストアアクションを設定する
キーストアアクションは、ユーザーが実行できるオペレーションと、 AWS KMS その階層キーリングがキーストアに許可リストされている KMS キーをどのように使用するかを決定します。は、次のキーストアアクション設定 AWS Encryption SDK をサポートしています。
- 静的
-
キーストアを静的に設定すると、キーストアは、キーストアアクションを設定するkmsConfiguration
ときに で指定した KMS キー ARN に関連付けられた KMS キーのみを使用できます。ブランチキーの作成、バージョニング、または取得時に別の KMS キー ARN が発生した場合、例外がスローされます。
でマルチリージョン KMS キーを指定できますがkmsConfiguration
、リージョンを含むキーの ARN 全体が KMS キーから派生したブランチキーに保持されます。別のリージョンでキーを指定することはできません。値を一致させるには、まったく同じマルチリージョンキーを指定する必要があります。
キーストアアクションを静的に設定すると、使用オペレーション (GetActiveBranchKey
、、GetBeaconKey
) と管理オペレーション ( GetBranchKeyVersion
CreateKey
および ) を実行できますVersionKey
。 CreateKey
は、キーストアの許可リストに新しい KMS キー ARN を追加できる特権オペレーションです。この KMS キーは、新しいアクティブなブランチキーを作成できます。KMS キーがキーストアに追加されると、削除できないため、このオペレーションへのアクセスを制限することをお勧めします。
- 発見
-
検出用にキーストアアクションを設定すると、キーストアはキーストアに許可リストされている任意の AWS KMS key ARN を使用できます。ただし、マルチリージョン KMS キーが検出され、キーの ARN のリージョンが使用されている AWS KMS クライアントのリージョンと一致しない場合、例外がスローされます。
検出用にキーストアを設定する場合、 CreateKey
や などの管理オペレーションを実行することはできませんVersionKey
。暗号化、復号、署名、検証オペレーションを有効にする使用オペレーションのみを実行できます。詳細については、「最小特権のアクセス許可の実装」を参照してください。
キーストアアクションを設定する
キーストアアクションを設定する前に、次の前提条件が満たされていることを確認してください。
-
実行する必要があるオペレーションを決定します。詳細については、「最小特権のアクセス許可の実装」を参照してください。
-
論理キーストア名を選択する
DynamoDB テーブル名と論理キーストア名の間には one-to-one のマッピングが必要です。論理キーストア名は、DynamoDB の復元オペレーションを簡素化するために、テーブルに保存されているすべてのデータに暗号でバインドされます。最初のユーザーが最初に定義した後は変更できません。キーストアアクションでは、常に同じ論理キーストア名を指定する必要があります。詳細については、「logical key store name」を参照してください。
次の例では、キーストアアクションを静的に設定します。キーストアとして機能する 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# / .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);
- Python
-
keystore: KeyStore = KeyStore(
config=KeyStoreConfig(
ddb_client=ddb_client,
ddb_table_name=key_store_name
,
logical_key_store_name=logical_key_store_name
,
kms_client=kms_client,
kms_configuration=KMSConfigurationKmsKeyArn(
value=kms_key_id
),
)
)
- 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)?;
- Go
-
import (
keystore "github.com/aws/aws-cryptographic-material-providers-library/mpl/awscryptographykeystoresmithygenerated"
keystoretypes "github.com/aws/aws-cryptographic-material-providers-library/mpl/awscryptographykeystoresmithygeneratedtypes"
)
kmsConfig := keystoretypes.KMSConfigurationMemberkmsKeyArn{
Value: kmsKeyArn
,
}
keyStore, err := keystore.NewClient(keystoretypes.KeyStoreConfig{
DdbTableName: keyStoreTableName
,
KmsConfiguration: &kmsConfig,
LogicalKeyStoreName: logicalKeyStoreName
,
DdbClient: ddbClient,
KmsClient: kmsClient,
})
if err != nil {
panic(err)
}
次の の例では、検出用のキーストアアクションを設定します。キーストアとして機能する 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# / .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);
- Python
-
keystore: KeyStore = KeyStore(
config=KeyStoreConfig(
ddb_client=ddb_client,
ddb_table_name=key_store_name
,
logical_key_store_name=logical_key_store_name
,
kms_client=kms_client,
kms_configuration=KMSConfigurationDiscovery(
value=Discovery()
),
)
)
- 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()?;
- Go
-
import (
keystore "github.com/aws/aws-cryptographic-material-providers-library/mpl/awscryptographykeystoresmithygenerated"
keystoretypes "github.com/aws/aws-cryptographic-material-providers-library/mpl/awscryptographykeystoresmithygeneratedtypes"
)
kmsConfig := keystoretypes.KMSConfigurationMemberdiscovery{}
keyStore, err := keystore.NewClient(keystoretypes.KeyStoreConfig{
DdbTableName: keyStoreName
,
KmsConfiguration: &kmsConfig,
LogicalKeyStoreName: logicalKeyStoreName
,
DdbClient: ddbClient,
KmsClient: kmsClient,
})
if err != nil {
panic(err)
}