Amazon Simple Storage Service
开发人员指南 (API Version 2006-03-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

使用 AWS 软件开发工具包在 Amazon S3 中指定 AWS Key Management Service

当使用 AWS 开发工具包时,您可以请求 Amazon S3 使用 AWS Key Management Service (AWS KMS) 托管加密密钥。此部分提供的示例演示了如何使用适用于 Java 和 .NET 的 AWS 开发工具包。有关其他开发工具包的信息,请转到示例代码和库

适用于 Java 的 AWS 开发工具包

本节介绍使用适用于 Java 的 AWS 开发工具包进行的各种 Amazon S3 操作以及如何使用 AWS KMS 托管加密密钥。

Put 操作

当使用适用于 Java 的 AWS 开发工具包上传对象时,您可以通过添加 SSEAwsKeyManagementParams 属性请求 Amazon S3 使用 AWS KMS 托管加密密钥,如以下请求所示:

Copy
PutObjectRequest putRequest = new PutObjectRequest(bucketName, keyName, file).withSSEAwsKeyManagementParams(new SSEAwsKeyManagementParams());

这种情况下,Amazon S3 使用默认主密钥 (参阅 使用具有 AWS KMS 托管密钥的服务器端加密 (SSE-KMS) 保护数据)。您可以选择创建自己的密钥并在请求中指定该密钥。

Copy
PutObjectRequest putRequest = new PutObjectRequest(bucketName, keyName, file).withSSEAwsKeyManagementParams(new SSEAwsKeyManagementParams(keyID));

有关创建密钥的更多信息,请转到 AWS Key Management Service Developer Guide 中的编程 AWS KMS API

有关上传对象的工作代码示例,请参阅以下主题。您将需要更新这些代码示例并提供加密信息,如上述代码片段所示。

复制操作

在复制对象时,您将添加相同的请求属性 (ServerSideEncryptionMethodServerSideEncryptionKeyManagementServiceKeyId) 来请求 Amazon S3 使用 AWS KMS 托管加密密钥。有关复制对象的更多信息,请参阅 复制对象

预签名 URL

在为使用 AWS KMS 托管加密密钥加密的对象创建预签名 URL 时,您必须显式指定签名版本 4:

Copy
ClientConfiguration clientConfiguration = new ClientConfiguration(); clientConfiguration.setSignerOverride("AWSS3V4SignerType"); AmazonS3Client s3client = new AmazonS3Client( new ProfileCredentialsProvider(), clientConfiguration); ...

有关代码示例,请参阅 使用AWS SDK for Java生成预签名对象 URL

适用于 .NET 的 AWS 开发工具包

本节介绍使用适用于 .NET 的 AWS 开发工具包进行的各种 Amazon S3 操作以及如何使用 AWS KMS 托管加密密钥。

Put 操作

当使用适用于 .NET 的 AWS 开发工具包上传对象时,您可以通过添加 ServerSideEncryptionMethod 属性请求 Amazon S3 使用 AWS KMS 托管加密密钥,如以下请求所示:

Copy
PutObjectRequest putRequest = new PutObjectRequest { BucketName = bucketName, Key = keyName, // other properties. ServerSideEncryptionMethod = ServerSideEncryptionMethod.AWSKMS };

这种情况下,Amazon S3 使用默认主密钥 (参阅 使用具有 AWS KMS 托管密钥的服务器端加密 (SSE-KMS) 保护数据)。您可以选择创建自己的密钥并在请求中指定该密钥。

Copy
PutObjectRequest putRequest1 = new PutObjectRequest { BucketName = bucketName, Key = keyName, // other properties. ServerSideEncryptionMethod = ServerSideEncryptionMethod.AWSKMS, ServerSideEncryptionKeyManagementServiceKeyId = keyId };

有关创建密钥的更多信息,请参阅 AWS Key Management Service Developer Guide 中的 AWS KMS API 编程

有关上传对象的工作代码示例,请参阅以下主题。您将需要更新这些代码示例并提供加密信息,如上述代码片段所示。

复制操作

在复制对象时,您将添加相同的请求属性 (ServerSideEncryptionMethodServerSideEncryptionKeyManagementServiceKeyId) 来请求 Amazon S3 使用 AWS KMS 托管加密密钥。有关复制对象的更多信息,请参阅 复制对象

预签名 URL

在为使用 AWS KMS 托管加密密钥加密的对象创建预签名 URL 时,您必须显式指定签名版本 4:

Copy
AWSConfigs.S3Config.UseSignatureVersion4 = true;

有关代码示例,请参阅 使用适用于 .NET 的 AWS 开发工具包生成预签名对象 URL