

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# サーバー側の暗号化を使用した Amazon SNS トピック暗号化のセットアップ
<a name="sns-enable-encryption-for-topic"></a>

Amazon SNS は、サーバー側の暗号化 (SSE) をサポートし、 AWS Key Management Service (AWS KMS) を使用してメッセージの内容を保護します。Amazon SNS コンソールまたは CDK を使用して SSE を有効にするには、次の手順に従います。

## オプション 1: を使用して暗号化を有効にする AWS マネジメントコンソール
<a name="enable-encryption-console"></a>

1. [Amazon SNS コンソール](https://console.aws.amazon.com/sns/home)にサインインします。

1. **[トピック]** ページに移動し、**[トピック]** を選択して、**[編集]** を選択します。

1. [**暗号化**] セクションを展開し、以下の操作を実行します。
   + 暗号化を **[有効]** に切り替えます。
   + **[AWS マネージド SNS キー**] (alias/aws/sns) を暗号化キーとして選択します。これはデフォルトで選択されています。

1. **[Save changes]** (変更の保存) をクリックします。

**注記**  
が存在しない場合 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 を有効にして、メッセージを確実かつ安全に送信することを推奨しています。