

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Amazon SQS 대기열에서 서버 측 암호화 사용
<a name="sqs-java-configure-sse"></a>

 AWS SDK for Java 를 사용하여 Amazon SQS 대기열에 서버 측 암호화(SSE)를 추가합니다. 각 대기열은 AWS Key Management Service (AWS KMS) KMS 키를 사용하여 데이터 암호화 키를 생성합니다. 이 예시에서는 Amazon SQS의 AWS 관리형 KMS 키를 사용합니다.

SSE 사용 및 KMS 키의 역할에 대한 자세한 정보는 [Amazon SQS에서 저장 시 암호화](sqs-server-side-encryption.md) 섹션을 참조하세요.

## 기존 대기열에 SSE 추가
<a name="sqs-java-configure-sse-existing-queue"></a>

기존 대기열에 대해 서버 측 암호화를 활성화하려면 `[SetQueueAttributes](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SetQueueAttributes.html)` 메서드를 사용하여 `KmsMasterKeyId` 속성을 설정합니다.

다음 코드 예제에서는를 Amazon SQS의 AWS 관리형 KMS 키 AWS KMS key 로 설정합니다. 또한 이 예제에서는 [AWS KMS key 재사용 기간을](sqs-server-side-encryption.md#sqs-sse-key-terms) 140초로 설정합니다.

 예제 코드를 실행하기 전에 자격 AWS 증명을 설정했는지 확인합니다. 자세한 내용은 *AWS SDK for Java 2.x 개발자 안내서*의 [개발을 위한 AWS 자격 증명 및 리전 설정을 참조하세요](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/setup.html#setup-credentials).

```
    public static void addEncryption(String queueName, String kmsMasterKeyAlias) {
        SqsClient sqsClient = SqsClient.create();

        GetQueueUrlRequest urlRequest = GetQueueUrlRequest.builder()
                .queueName(queueName)
                .build();

        GetQueueUrlResponse getQueueUrlResponse;
        try {
            getQueueUrlResponse = sqsClient.getQueueUrl(urlRequest);
        } catch (QueueDoesNotExistException e) {
            LOGGER.error(e.getMessage(), e);
            throw new RuntimeException(e);
        }
        String queueUrl = getQueueUrlResponse.queueUrl();


        Map<QueueAttributeName, String> attributes = Map.of(
                QueueAttributeName.KMS_MASTER_KEY_ID, kmsMasterKeyAlias,
                QueueAttributeName.KMS_DATA_KEY_REUSE_PERIOD_SECONDS, "140" // Set the data key reuse period to 140 seconds.
        );                                                                  // This is how long SQS can reuse the data key before requesting a new one from KMS.

        SetQueueAttributesRequest attRequest = SetQueueAttributesRequest.builder()
                .queueUrl(queueUrl)
                .attributes(attributes)
                .build();
        try {
            sqsClient.setQueueAttributes(attRequest);
            LOGGER.info("The attributes have been applied to {}", queueName);
        } catch (InvalidAttributeNameException | InvalidAttributeValueException e) {
            LOGGER.error(e.getMessage(), e);
            throw new RuntimeException(e);
        } finally {
            sqsClient.close();
        }
    }
```

## 대기열에 SSE 비활성화
<a name="sqs-java-disable-sse"></a>

기존 대기열의 서버 측 암호화를 비활성화하려면 `SetQueueAttributes` 메서드를 사용하여 `KmsMasterKeyId` 속성을 빈 문자열로 설정하세요.

**중요**  
`null`은 유효한 `KmsMasterKeyId` 값이 아닙니다.

## SSE를 사용하여 대기열 생성
<a name="sqs-java-configure-sse-create-queue"></a>

대기열을 생성할 때 SSE를 활성화하려면 `[CreateQueue](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_CreateQueue.html)` API 메서드에 `KmsMasterKeyId` 속성을 추가합니다.

다음 예제에서는 SSE가 활성화된 새 대기열을 만듭니다. 대기열은 Amazon SQS에 AWS 관리형 KMS 키를 사용합니다. 또한 이 예제에서는 [AWS KMS key 재사용 기간을](sqs-server-side-encryption.md#sqs-sse-key-terms) 160초로 설정합니다.

 예제 코드를 실행하기 전에 자격 AWS 증명을 설정했는지 확인합니다. 자세한 내용은 *AWS SDK for Java 2.x 개발자 안내서*의 [개발을 위한 AWS 자격 증명 및 리전 설정을 참조하세요](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/setup.html#setup-credentials).

```
// 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 속성 검색
<a name="sqs-java-get-sse-attributes"></a>

대기열 속성 검색에 대한 자세한 내용은 **Amazon Simple Queue Service API 참조의 [예](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_GetQueueAttributes.html#API_GetQueueAttributes_Examples)를 참조합니다.

특정 대기열의 KMS 키 ID 또는 데이터 키 재사용 기간을 검색하려면 `[GetQueueAttributes](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_GetQueueAttributes.html)` 메서드를 실행하고 `KmsMasterKeyId` 및 `KmsDataKeyReusePeriodSeconds` 값을 검색합니다.