本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
对 Amazon SQS 队列使用服务器端加密
您可以使用将服务器端加密 (SSE) 添加 AWS SDK for Java 到 Amazon SQS 队列。每个队列使用 AWS Key Management Service (AWS KMS) KMS 密钥生成数据加密密钥。此示例使用适用于 Amazon SQS 的 AWS 托管 KMS 密钥。有关使用 SSE 和 KMS 密钥角色的更多信息,请参阅Amazon 中的静态加密 SQS。
向现有队列添加 SSE
要为现有队列启用服务器端加密,请使用 SetQueueAttributes
方法设置 KmsMasterKeyId
属性。
以下代码示例将设置 AWS KMS key 为 Amazon SQS 的 AWS 托管 KMS 密钥。该示例还会将 AWS KMS key 重用周期设置为 140 秒。
在运行示例代码之前,请确保已设置 AWS 凭据。有关更多信息,请参阅《AWS SDK for Java 2.x 开发人员指南》中的设置开发 AWS 凭证和区域。
// Create an SqsClient for the specified Region. SqsClient sqsClient = SqsClient.builder().region(Region.US_WEST_1).build(); // Get the URL of your queue. String myQueueName = "my queue"; GetQueueUrlResponse getQueueUrlResponse = sqsClient.getQueueUrl(GetQueueUrlRequest.builder().queueName(myQueueName).build()); String queueUrl = getQueueUrlResponse.queueUrl(); // Create a hashmap for the attributes. Add the key alias and reuse period to the hashmap. HashMap<QueueAttributeName, String> attributes = new HashMap<QueueAttributeName, String>(); final String kmsMasterKeyAlias = "alias/aws/sqs"; // the alias of the AWS managed KMS key for Amazon SQS. attributes.put(QueueAttributeName.KMS_MASTER_KEY_ID, kmsMasterKeyAlias); attributes.put(QueueAttributeName.KMS_DATA_KEY_REUSE_PERIOD_SECONDS, "140"); // Create the SetQueueAttributesRequest. SetQueueAttributesRequest set_attrs_request = SetQueueAttributesRequest.builder() .queueUrl(queueUrl) .attributes(attributes) .build(); sqsClient.setQueueAttributes(set_attrs_request);
为队列禁用 SSE
要为现有队列禁用服务器端加密,请使用 SetQueueAttributes
方法将 KmsMasterKeyId
属性设置为空字符串。
重要
null
对于 KmsMasterKeyId
是无效值。
使用 SSE 创建队列
要在创建队列时启用 SSE,请将 KmsMasterKeyId
属性添加到 CreateQueue
API 方法中。
以下示例将在启用了 SSE 的情况下创建新队列。队列将 AWS 托管 KMS 密钥用于 Amazon SQS。该示例还会将 AWS KMS key 重用周期设置为 160 秒。
在运行示例代码之前,请确保已设置 AWS 凭据。有关更多信息,请参阅《AWS SDK for Java 2.x 开发人员指南》中的设置开发 AWS 凭证和区域。
// Create an SqsClient for the specified Region. SqsClient sqsClient = SqsClient.builder().region(Region.US_WEST_1).build(); // Create a hashmap for the attributes. Add the key alias and reuse period to the hashmap. HashMap<QueueAttributeName, String> attributes = new HashMap<QueueAttributeName, String>(); final String kmsMasterKeyAlias = "alias/aws/sqs"; // the alias of the AWS managed KMS key for Amazon SQS. attributes.put(QueueAttributeName.KMS_MASTER_KEY_ID, kmsMasterKeyAlias); attributes.put(QueueAttributeName.KMS_DATA_KEY_REUSE_PERIOD_SECONDS, "140"); // Add the attributes to the CreateQueueRequest. CreateQueueRequest createQueueRequest = CreateQueueRequest.builder() .queueName(queueName) .attributes(attributes) .build(); sqsClient.createQueue(createQueueRequest);
检索 SSE 属性
有关检索队列属性的信息,请参阅 Amazon Simple Queue Service API 参考中的示例。
要检索特定队列的 KMS 密钥 ID 或数据密钥重用周期,请运行 GetQueueAttributes
方法并检索 KmsMasterKeyId
和 KmsDataKeyReusePeriodSeconds
值。