설명
SQS 서버 측 암호화는 큐에 저장되는 메시지 본문을 보호합니다. 암호화를 끄면 이후 들어오는 메시지가 이 보호 없이 저장됩니다. 현재 새 큐에서 KmsMasterKeyId와 SqsManagedSseEnabled를 모두 생략하면 기본적으로 SSE-SQS가 활성화되므로, 생략 자체를 비암호화로 해석해서는 안 됩니다.
잠재적 영향
암호화하지 않은 메시지 본문은 저장 데이터가 노출될 때 민감한 내용을 보호하기 어렵습니다. 서버 측 암호화도 허용된 메시지 조회나 과도한 큐 권한을 차단하지는 않습니다.
해결 방법
SQS 관리형 암호화를 사용하려면 SqsManagedSseEnabled: true를 설정하세요. KMS 키 통제가 필요하면 KmsMasterKeyId를 지정하고 생산자·소비자에게 필요한 키 권한을 구성하세요. 변경은 기존 메시지를 소급 암호화하지 않으므로 필요한 기존 키 권한을 유지하고 송수신을 확인하세요. TLS와 큐 접근 정책도 별도로 관리하세요.
예시
서로 다른 두 큐의 발췌입니다. QueueKeyId에는 사용 가능한 KMS 키를 제공하세요.
변경 전
yaml
Resources:
MyQueue:
Type: AWS::SQS::Queue
Properties:
QueueName: SampleQueue
MyQueue2:
Type: AWS::SQS::Queue
Properties:
QueueName: SampleQueue2
SqsManagedSseEnabled: false
MyQueue는 현재 기본 SSE-SQS를 사용합니다. MyQueue2는 관리형 암호화를 명시적으로 끄고 다른 암호화 키도 지정하지 않습니다.
변경 후
yaml
Resources:
MyQueue:
Type: AWS::SQS::Queue
Properties:
QueueName: SampleQueue
KmsMasterKeyId: !Ref QueueKeyId
MyQueue2:
Type: AWS::SQS::Queue
Properties:
QueueName: SampleQueue2
SqsManagedSseEnabled: true
MyQueue는 지정한 KMS 키를, MyQueue2는 SSE-SQS를 사용합니다. 이 설정은 메시지 속성 등 모든 메타데이터를 암호화하는 설정은 아닙니다.