Amazon ECS Service Connect 트래픽 암호화
Amazon ECS Service Connect는 Amazon ECS 서비스에 대해 전송 계층 보안(TLS) 인증서를 사용한 자동 트래픽 암호화를 지원합니다. Amazon ECS 서비스에서 AWS Private Certificate Authority(AWS Private CA)를 가리키면 Amazon ECS는 자동으로 TLS 인증서를 프로비저닝하여 Amazon ECS Service Connect 서비스 사이에서 트래픽을 암호화합니다. Amazon ECS는 트래픽 암호화에 사용되는 TLS 인증서를 생성, 교체 및 분산합니다.
Service Connect를 사용하는 자동 트래픽 암호화는 업계 최고의 암호화 기능을 사용하여 보안 요구 사항을 충족할 수 있도록 서비스 간 통신을 보호합니다. 256-bit
ECDSA
및 2048-bit RSA
암호화를 사용하는 AWS Private Certificate Authority TLS 인증서를 지원합니다. 기본적으로 TLS 1.3은 지원되지만 TLS 1.0~1.2는 지원되지 않습니다. 또한 규정 준수 요구 사항을 충족할 수 있도록 프라이빗 인증서 및 서명 키를 완벽하게 제어합니다.
참고
TLS 1.3을 사용하려면 이를 대상의 리스너에서도 활성화해야 합니다.
Amazon ECS 에이전트를 통과하는 인바운드 및 아웃바운드 트래픽만 암호화됩니다.
AWS Private Certificate Authority 인증서 및 Service Connect
인증서를 발급하는 데 필요한 추가 IAM 권한이 있습니다. Amazon ECS는 권한 세트를 간략하게 설명하는 관리형 리소스 신뢰 정책을 제공합니다. 이 정책에 대한 자세한 내용은 AmazonECSInfrastructureRolePolicyForServiceConnectTransportLayerSecurity를 참조하세요.
Service Connect에 대한 AWS Private Certificate Authority 모드
AWS Private Certificate Authority는 범용 모드와 단기 모드와 같은 두 가지 모드로 실행할 수 있습니다.
-
범용 - 만료 날짜를 포함하여 구성할 수 있는 인증서.
-
단기 - 최대 유효 기간이 7일인 인증서.
Amazon ECS는 두 모드를 모두 지원하지만 단기 인증서를 사용하는 것이 좋습니다. 기본적으로 인증서는 5일마다 교체되며, 단기 모드로 실행할 경우 범용 모드에 비해 비용을 크게 절감할 수 있습니다.
Service Connect는 인증서 해지를 지원하지 않으며, 대신 인증서 교체가 잦은 단기 인증서를 활용합니다. Secrets Manager에서 관리형 교체를 사용하여 교체 빈도를 수정하거나 보안 암호를 비활성화 또는 삭제할 수 있는 권한을 보유하지만, 이 경우 다음과 같은 결과가 발생할 수 있습니다.
-
더 짧은 교체 빈도 - 교체 빈도가 짧을수록 AWS Private CA, AWS KMS, Secrets Manager와 Auto Scaling에서 교체 워크로드가 증가하기 때문에 비용이 증가합니다.
-
더 긴 교체 빈도 - 교체 빈도가 7일을 초과하면 애플리케이션 통신이 실패합니다.
-
보안 암호 삭제 - 보안 암호를 삭제하면 교체에 실패하고 고객 애플리케이션 통신에 영향을 미칩니다.
보안 암호 교체에 실패하는 경우 RotationFailed
이벤트가 AWS CloudTrail에 게시됩니다. RotationFailed
에 대한 CloudWatch 경보를 설정할 수도 있습니다.
중요
보안 암호에 복제 리전을 추가하지 마세요. 이렇게 하면 Amazon ECS는 복제에서 리전을 제거할 수 있는 권한이 없으므로 Amazon ECS가 보안 암호를 삭제할 수 없습니다. 이미 복제를 추가한 경우 다음 명령을 실행합니다.
aws secretsmanager remove-regions-from-replication \ --secret-id
SecretId
\ --remove-replica-regionsregion-name
하위 인증 기관
AWS Private CA, 루트 또는 하위 항목을 Service Connect TLS로 가져와 서비스에 대한 최종 엔터티 인증서를 발급할 수 있습니다. 제공된 발행자는 어디서나 서명자 및 신뢰 루트로 처리됩니다. 서로 다른 하위 CA에서 애플리케이션의 여러 부분에 대한 최종 엔터티 인증서를 발급할 수 있습니다. AWS CLI를 사용하는 경우 CA의 Amazon 리소스 이름(ARN)을 제공하여 신뢰 체인을 설정합니다.
온프레미스 인증 기관
온프레미스 CA를 사용하려면 AWS Private Certificate Authority에서 하위 CA를 생성하고 구성합니다. 이렇게 하면 Amazon ECS 워크로드용으로 발급된 모든 TLS 인증서가 온프레미스에서 실행하는 워크로드와 신뢰 체인을 공유하고 안전하게 연결할 수 있습니다.
중요
AWS Private CA에서 필수 태그 AmazonECSManaged :
true
를 추가합니다.
코드형 인프라
코드형 인프라(IaC) 도구와 함께 Service Connect TLS를 사용할 때 서비스가 드레이닝 상태로 멈추는 등의 문제가 발생하지 않도록 종속성을 올바르게 구성하는 것이 중요합니다. Amazon ECS 서비스 이후에 AWS KMS 키(제공된 경우), IAM 역할 및 AWS Private CA 종속성을 삭제해야 합니다.
Service Connect 및 Secrets Manager
Amazon ECS Service Connect를 TLS 암호화와 함께 사용하는 경우 서비스는 다음과 같은 방식으로 Secrets Manager와 상호 작용합니다.
Service Connect에서는 제공된 인프라 역할을 활용하여 Secrets Manager 내에 보안 암호를 생성합니다. 이러한 보안 암호는 Service Connect 서비스 간 트래픽 암호화를 위해 TLS 인증서에 연결된 프라이빗 키를 저장하는 데 사용됩니다.
주의
Service Connect를 통한 이러한 보안 암호의 자동 생성 및 관리는 서비스에 TLS 암호화를 구현하는 프로세스를 간소화합니다. 그러나 보안에 미치는 잠재적인 영향을 인식하는 것이 중요합니다. Secrets Manager에 대한 읽기 액세스 권한이 있는 다른 IAM 역할에서는 자동으로 생성된 이러한 보안 암호에 액세스할 수 있습니다. 그러면 액세스 제어가 제대로 구성되지 않은 경우 민감한 암호화 자료가 권한이 없는 당사자에게 노출될 수 있습니다.
이 위험을 완화하려면 다음과 같은 모범 사례를 따릅니다.
-
특히 Service Connect에서 생성된 보안 암호의 경우 Secrets Manager에 대한 액세스 권한을 신중하게 관리하고 제한합니다.
-
최소 권한의 원칙이 유지되도록 IAM 역할 및 권한을 정기적으로 감사합니다.
Secrets Manager에 대한 읽기 액세스 권한을 부여할 때는 Service Connect에서 생성된 TLS 프라이빗 키를 제외하는 것이 좋습니다. IAM 정책의 조건을 사용하여 패턴과 일치하는 ARN이 있는 보안 암호를 제외하여 이렇게 할 수 있습니다.
"arn:aws:secretsmanager:::secret:ecs-sc!"
ecs-sc!
접두사가 있는 모든 보안 암호에 대한 GetSecretValue
작업을 거부하는 IAM 정책의 예:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "secretsmanager:GetSecretValue", "Resource": "arn:aws:secretsmanager:*:*:secret:ecs-sc!*" } ] }
참고
이는 일반적인 예이며 구체적인 사용 사례 및 AWS 계정 구성에 따라 조정하는 것이 좋습니다. 항상 IAM 정책을 철저히 테스트하여 보안 유지 관리되면서 의도한 액세스 권한이 제공되는지 확인합니다.
Service Connect가 Secrets Manager와 상호 작용하는 방식을 이해하면 Amazon ECS 서비스의 보안을 더 잘 관리하는 동시에 자동 TLS 암호화의 이점을 활용할 수 있습니다.
Service Connect 및 AWS Key Management Service
AWS Key Management Service를 사용하여 Service Connect 리소스를 암호화하고 해독할 수 있습니다. AWS KMS는 데이터를 보호하는 암호화 키를 만들고 관리할 수 있는 AWS 관리형 서비스입니다.
Service Connect에서 AWS KMS를 사용할 경우 사용자를 대신해 AWS에서 관리하는 AWS 소유 키를 사용하거나 기존 AWS KMS 키를 선택할 수 있습니다. 사용할 새 AWS KMS 키를 생성할 수도 있습니다.
자체 암호화 키 제공
자체 키 자료를 제공할 수도 있고, AWS Key Management Service를 통해 외부 키 저장소를 사용할 수 있습니다. 자체 키를 AWS KMS에 가져오고 Amazon ECS Service Connect에서 해당 키의 Amazon 리소스 이름(ARN)을 지정합니다.
다음은 예제 AWS KMS 정책입니다. 모든 사용자 입력
을 고유한 값으로 바꿉니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "
id
", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333
:role/role-name
" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey", "kms:GenerateDataKeyPair" ], "Resource": "*" } ] }
키 정책을 생성하는 방법에 대한 자세한 내용은 AWS Key Management Service 개발자 안내서의 Creating a key policy를 참조하세요.
참고
Service Connect는 대칭 암호화 AWS KMS 키만 지원합니다. 다른 유형의 AWS KMS 키를 사용하여 Service Connect 리소스를 암호화할 수 없습니다. AWS KMS 키가 대칭 암호화 키인지 확인하는 것과 관련된 도움말은 비대칭 KMS 키 식별을 참조하세요.
AWS Key Management Service 대칭 암호화 키에 대한 자세한 내용은 AWS Key Management Service 개발자 안내서의 Symmetric encryption AWS KMS keys를 참조하세요.