[新機能] SQSでサーバサイド暗号化(SSE)がサポートされました

2017.04.29

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは。菊池です。

昨日、2017年4月28日のアップデートにて、Amazon Simple Queue Service(SQS)でのサーバサイド暗号化(SSE)が利用可能になりました。

現時点でオレゴンリージョン、オハイオリージョンの2つのリージョンで利用可能です。

試してみた

早速試してみました。

SSEに対応した、オレゴンリージョンで新規にキューを作成します。SSEはスタンダードキュー、FIFOキューのどちらでも利用可能です。

sqs-sse-001

[キューの設定]で、SSEを有効化します。

sqs-sse-002

まずはKMSのカスタマーマスターキーにはデフォルトを選択しました。

sqs-sse-003

キューが作成されました。[暗号化]タブでSSEの設定が確認できます。

sqs-sse-004

作成したキューにメッセージを送信してみます。デフォルトキーを利用したので、SQSの利用権限さえあれば特に問題なくキューへのメッセージ送受信は可能です。

$ aws --region us-west-2 sqs send-message --queue-url https://sqs.us-west-2.amazonaws.com/xxxxxxxxxxxx/test-que --message-body "test message"
{
    "MD5OfMessageBody": "c72b9698fa1927e1dd12d3cf26ed84b2",
    "MessageId": "3b9cc08d-7482-475d-9b8b-78c2451ea786"
}

次に、KMSのカスタマーマスターキーを変更して試してみます。KMSのマスターキー作成には、IAMのメニューから[暗号化キー]を選択し、[キーの作成]から進みます。

sqs-sse-005

作成したカスタマーマスターキーをキューに設定します。作成済みのキューからも、設定変更が可能です。

sqs-sse-006

作成したカスタマーマスターキーを利用してSQSのSSEを使う場合には、CMKキーポリシーで利用するIAMユーザ/ロールがキーユーザーに設定されている必要があります。

sqs-sse-007

キーユーザーに設定されたIAMユーザ/ロールからは特に意識することなく、サービスを利用することが可能です。

$ aws --region us-west-2 sqs send-message --queue-url https://sqs.us-west-2.amazonaws.com/xxxxxxxxxxxx/test-que --message-body "test message"
{
    "MD5OfMessageBody": "c72b9698fa1927e1dd12d3cf26ed84b2",
    "MessageId": "1dcb3dcc-e55e-494c-b7d1-c127e9c16df1"
}

キーユーザーに設定されていないIAMユーザ/ロールを使ってSQSにメッセージを送信してみると、以下のようにデータキーの生成ができず、エラーとなりました。

$ aws --region us-west-2 sqs send-message --queue-url https://sqs.us-west-2.amazonaws.com/xxxxxxxxxxxx/test-que --message-body "test message"

An error occurred (KMS.AccessDeniedException) when calling the SendMessage operation: User: arn:aws:sts::xxxxxxxxxxxx:assumed-role/sqsUser/i-xxxxxxxxxxxxxxxx is not authorized to perform: kms:GenerateDataKey on resource: arn:aws:kms:us-west-2:xxxxxxxxxxxx:key/7805fc3c-8927-4dcd-8238-xxxxxxxxxxxx (Service: AWSKMS; Status Code: 400; Error Code: AccessDeniedException; Request ID: 27906070-2cb7-11e7-97ba-712889b5df06)

注意事項

現時点ではSSEを有効化したキューに対し、以下のサービスとの連携がサポートされません。

  • Amazon CloudWatch Events
  • Amazon S3 Event Notifications
  • Amazon SNS Topic Subscriptions
  • Auto Scaling Lifecycle Hooks
  • AWS IoT Rule Actions
  • AWS Lambda Dead Letter Queues

まとめ

以上です。

今回のアップデートにより、セキュリティポリシー上キーのメッセージを暗号化する必要がある場合に、手間をかけずにサーバーサイド暗号化を実現可能になりました。セキュリティ要件に応じて必要な手段が、サービスとしてサポートされているのは非常にありがたいですね。