

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

# 서버 측 암호화로 Amazon SNS 주제 암호화 설정
<a name="sns-enable-encryption-for-topic"></a>

Amazon SNS는 AWS Key Management Service (AWS KMS)를 사용하여 메시지 내용을 보호하기 위해 서버 측 암호화(SSE)를 지원합니다. 아래 지침에 따라 Amazon SNS 콘솔 또는 CDK를 사용하여 SSE를 활성화합니다.

## 옵션 1:를 사용하여 암호화 활성화 AWS Management Console
<a name="enable-encryption-console"></a>

1. [Amazon SNS 콘솔](https://console.aws.amazon.com/sns/home)에 로그인합니다.

1. **주제** 페이지로 이동하여 **주제**를 선택하고 **편집**을 선택합니다.

1. **암호화** 섹션을 확장하고 다음을 수행합니다.
   + 암호화를 **활성화**로 전환합니다.
   + **AWS 관리형 SNS 키**(alias/aws/sns)를 암호화 키로 선택합니다. 기본값으로 선택됩니다.

1. **변경 사항 저장**을 선택합니다.

**참고**  
 AWS 관리형 키 는 아직 없는 경우 자동으로 생성됩니다.
키가 표시되지 않거나 권한이 부족한 경우 관리자에게 `kms:ListAliases` 및 `kms:DescribeKey`를 요청하세요.

## 옵션 2:를 사용하여 암호화 활성화 AWS CDK
<a name="enable-encryption-cdk"></a>

CDK 애플리케이션에서 AWS 관리형 SNS  키를 사용하려면 다음 코드 조각을 추가합니다.

```
import software.amazon.awscdk.services.sns.*;
import software.amazon.awscdk.services.kms.*;
import software.amazon.awscdk.core.*;

public class SnsEncryptionExample extends Stack {
    public SnsEncryptionExample(final Construct scope, final String id) {
        super(scope, id);

        // Define the managed SNS key
        IKey snsKey = Alias.fromAliasName(this, "helloKey", "alias/aws/sns");

        // Create the SNS Topic with encryption enabled
        Topic.Builder.create(this, "MyEncryptedTopic")
            .masterKey(snsKey)
            .build();
    }
}
```

## 추가 정보
<a name="set-up-topic-with-sse"></a>
+ **사용자 지정 KMS 키** - 필요한 경우 사용자 지정 키를 지정할 수 있습니다. Amazon SNS 콘솔의 목록에서 사용자 지정 KMS 키를 선택하거나 ARN을 입력합니다.
+ **사용자 지정 KMS 키에 대한 권한** - 사용자 지정 KMS 키를 사용하는 경우 Amazon SNS가 메시지를 암호화하고 해독할 수 있도록 키 정책에 다음을 포함합니다.

```
{ 
    "Effect": "Allow", 
    "Principal": { 
        "Service": "sns.amazonaws.com" 
     },
    "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey"
    ],
    "Resource": "*",
    "Condition": {
        "ArnLike": { 
            "aws:SourceArn": "arn:aws:{{service}}:{{region}}:{{customer-account-id}}:{{resource-type}}/{{customer-resource-id}}" 
        },
        "StringEquals": { 
            "kms:EncryptionContext:aws:sns:topicArn": "arn:aws:sns:{{your_region}}:{{customer-account-id}}:{{your_sns_topic_name}}" 
        }
    }
}
```

## 소비자에게 미치는 영향
<a name="enable-encryption-impact-on-consumers"></a>

SSE를 활성화해도 구독자가 메시지를 사용하는 방법은 변경되지 않습니다. 암호화 및 복호화를 투명하게 AWS 관리합니다. 메시지는 저장 시 암호화된 상태로 유지되며 구독자에게 전송되기 전에 자동으로 복호화됩니다. 최적의 보안을 위해 AWS 는 메시지의 안전한 전송을 보장하기 위해 모든 엔드포인트에 HTTPS를 활성화할 것을 권장합니다.