Amazon ECS의 보안 암호 관리 모범 사례 - Amazon Elastic Container Service

Amazon ECS의 보안 암호 관리 모범 사례

API 키 및 데이터베이스 보안 인증과 같은 보안 암호는 애플리케이션이 다른 시스템에 액세스하는 데 자주 사용됩니다. 일반적으로 보안 암호는 사용자 이름과 암호, 인증서 또는 API 키로 구성됩니다. 이러한 보안 암호는 IAM을 사용하는 특정 IAM 보안 주체로 액세스를 제한하고 런타임 시 컨테이너에 주입해야 합니다.

AWS Secrets Manager 및 Amazon EC2 Systems Manager Parameter Store에서 컨테이너에 보안 암호를 원활하게 주입할 수 있습니다. 이러한 보안 암호는 작업에서 다음 중 하나로 참조할 수 있습니다.

  1. secrets 컨테이너 정의 파라미터를 사용하는 환경 변수로 참조합니다.

  2. 로깅 플랫폼에 인증이 필요한 경우 secretOptions로 참조합니다. 자세한 내용은 logging configuration options를 참조하세요.

  3. 컨테이너가 풀되는 레지스트리에 인증이 필요한 경우 repositoryCredentials 컨테이너 정의 파라미터를 사용하여 이미지에 의해 풀되는 보안 암호로 참조합니다. Amazon ECR 퍼블릭 갤러리에서 이미지를 풀할 때 이 방법을 사용합니다. 자세한 내용은 Private registry authentication for tasks를 참조하세요.

보안 암호 권장 사항

보안 암호 관리를 설정할 때 다음을 수행하는 것이 좋습니다.

AWS Secrets Manager 또는 Amazon EC2 Systems Manager Parameter Store를 사용하여 보안 암호 자료 저장

API 키, 데이터베이스 보안 인증 및 기타 보안 암호 자료를 안전하게 AWS Secrets Manager에 저장하거나 Amazon EC2 Systems Manager Parameter Store에 암호화된 파라미터로 저장해야 합니다. 두 서비스 모두 민감한 데이터를 암호화하는 AWS KMS을 사용하는 관리형 키-값 저장소라는 점에서 유사합니다. 하지만 AWS Secrets Manager는 보안 암호를 자동으로 교체하고, 보안 암호를 무작위로 생성하고, AWS 계정 간에 보안 암호를 공유하는 기능도 포함합니다. 이러한 기능이 중요한 경우 AWS Secrets Manager, 그렇지 않은 경우 암호화된 파라미터를 사용하세요.

참고

AWS Secrets Manager 또는 Amazon EC2 Systems Manager Parameter Store의 암호를 참조하는 작업에는 원하는 보안 암호 및 해당하는 경우 보안 암호를 암호화하거나 암호 해독하는 데 사용되는 AWS KMS 키에 대한 액세스 권한을 Amazon ECS에 부여하는 정책을 사용하는 작업 실행 역할이 필요합니다.

중요

작업에서 참조되는 보안 암호는 자동으로 교체되지 않습니다. 보안 암호가 변경되면 새 배포를 강제로 적용하고 새 작업을 시작하여 최신 보안 암호 값을 검색해야 합니다. 자세한 정보는 다음 주제를 참조하세요.

암호화된 Amazon S3 버킷에서 데이터 검색

환경 변수 값이 실수로 로그에서 누출되고 docker inspect를 실행할 때 표시될 수 있으므로 보안 암호를 암호화된 Amazon S3 버킷에 저장하고 작업 역할을 사용하여 이러한 보안 암호에 대한 액세스를 제한해야 합니다. 이렇게 하는 경우, Amazon S3 버킷에서 보안 암호를 읽도록 애플리케이션을 작성해야 합니다. 자세한 내용은 Amazon S3 버킷에 대한 기본 서버 측 암호화 동작 설정을 참조하세요.

사이드카 컨테이너를 사용하여 보안 암호를 볼륨에 마운트

환경 변수를 사용하면 데이터 누출 위험이 높아지므로 보안 암호를 AWS Secrets Manager에서 읽고 공유 볼륨에 쓰는 사이드카 컨테이너를 실행해야 합니다. Amazon ECS 컨테이너 순서를 사용하면 이 컨테이너를 애플리케이션 컨테이너보다 먼저 실행하고 종료할 수 있습니다. 이렇게 하면 이후 애플리케이션 컨테이너는 보안 암호가 기록된 볼륨을 마운트합니다. Amazon S3 버킷 방법과 마찬가지로 공유 볼륨에서 보안 암호를 읽도록 애플리케이션을 작성해야 합니다. 이 볼륨은 범위가 작업으로 지정되므로 작업이 중지되면 자동으로 삭제됩니다. 사이드카 컨테이너의 예제는 aws-secret-sidecar-injector 프로젝트를 참조하세요.

참고

Amazon EC2에서는 보안 암호가 기록되는 볼륨을 AWS KMS 고객 관리형 키로 암호화할 수 있습니다. AWS Fargate에서는 서비스 관리형 키를 사용하여 볼륨 스토리지를 자동으로 암호화합니다.

추가적인 리소스