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 또는 AWS Systems Manager Parameter Store를 사용하여 보안 암호 자료 저장

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

중요

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

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

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

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

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

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