Amazon ECS 환경 변수를 통해 Systems Manager 파라미터 전달 - Amazon Elastic Container Service

Amazon ECS 환경 변수를 통해 Systems Manager 파라미터 전달

Amazon ECS를 사용하면 AWS Systems Manager Parameter Store 파라미터에 민감한 데이터를 저장한 후 컨테이너 정의에서 참조하여 컨테이너에 민감한 데이터를 주입할 수 있습니다.

환경 변수를 사용하여 Systems Manager 보안 암호를 컨테이너에 주입할 때 다음을 고려하세요.

  • 컨테이너가 처음 시작될 때 해당 컨테이너에 중요한 정보가 주입됩니다. 암호가 이후에 업데이트되거나 교체되면 컨테이너가 업데이트된 값을 자동으로 받지 않습니다. 새 태스크를 시작해야 하거나 작업이 서비스의 일부인 경우 서비스를 업데이트하고 새 배포 강제 적용을 사용하여 서비스에서 새 태스크를 시작하도록 강제로 지정할 수 있습니다.

  • AWS Fargate에서의 Amazon ECS 태스크의 경우 다음 사항을 고려해야 합니다.

    • 암호의 전체 내용을 환경 변수 또는 로그 구성으로 주입하려면 플랫폼 버전 1.3.0 이상을 사용해야 합니다. 자세한 내용은 Amazon ECS에 대한 Fargate 플랫폼 버전 섹션을 참조하세요.

    • 암호의 JSON 키 또는 버전을 환경 변수 또는 로그 구성으로 주입하려면 플랫폼 버전 1.4.0 이상(Linux) 또는 1.0.0(Windows)을 사용해야 합니다. 자세한 내용은 Amazon ECS에 대한 Fargate 플랫폼 버전 섹션을 참조하세요.

  • EC2에서의 Amazon ECS 태스크의 경우 다음 사항을 고려해야 합니다.

    • 암호의 특정 JSON 키 또는 버전을 사용하여 암호를 주입하려면 컨테이너 인스턴스에 컨테이너 에이전트 버전 1.37.0 이상이 있어야 합니다. 그러나 최신 버전의 컨테이너 에이전트를 사용하는 것이 좋습니다. 에이전트 버전을 확인하고 최신 버전으로 업데이트하는 방법에 대한 자세한 내용은 Amazon ECS 컨테이너 에이전트 업데이트 섹션을 참조하세요.

      암호의 전체 내용을 환경 변수로 주입하거나 로그 구성에 암호를 주입하려면 컨테이너 인스턴스에 컨테이너 에이전트 버전 1.22.0 이상이 있어야 합니다.

  • 인터페이스 VPC 엔드포인트를 사용하여 보안 제어를 강화합니다. Systems Manager용 인터페이스 VPC 엔드포인트를 생성해야 합니다. VPC 엔드포인트에 대한 자세한 내용은 AWS Systems Manager 사용 설명서의 Systems Manager용 VPC 엔드포인트를 사용하여 EC2 인스턴스의 보안 개선을 참조하세요.

  • 태스크 정의에서는 Systems Manager Parameter Store에 대한 추가 권한을 보유한 태스크 실행 역할을 사용해야 합니다. 자세한 내용은 Amazon ECS 태스크 실행 IAM 역할 섹션을 참조하세요.

  • awslogs 로깅 드라이버를 사용하도록 구성된 Windows 태스크의 경우 컨테이너 인스턴스에 ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE 환경 변수도 설정해야 합니다. 다음 구문을 사용합니다.

    <powershell> [Environment]::SetEnvironmentVariable("ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE", $TRUE, "Machine") Initialize-ECSAgent -Cluster <cluster name> -EnableTaskIAMRole -LoggingDrivers '["json-file","awslogs"]' </powershell>

Systems Manager 파라미터 생성

Systems Manager 콘솔을 사용하면 중요 데이터에 대한 Systems Manager Parameter Store 파라미터를 생성할 수 있습니다. 자세한 내용은 AWS Systems Manager 사용 설명서의 Systems Manager 파라미터 생성(콘솔) 또는 Systems Manager 파라미터 생성(AWS CLI)을 참조하세요.

컨테이너 정의에 환경 변수 추가

태스크 정의의 컨테이너 정의 내에서 컨테이너에 설정할 환경 변수의 이름으로 secrets를 지정하여 컨테이너에 제공할 민감한 데이터가 들어있는 Systems Manager Parameter Store 파라미터의 전체 ARN을 지정합니다. 자세한 내용은 secrets 섹션을 참조하세요.

다음은 Systems Manager 파라미터 스토어 파라미터를 참조할 때 형식을 나타내는 태스크 정의의 조각입니다. Systems Manager 파라미터 스토어 파라미터가 현재 실행 중인 태스크와 동일한 리전에 있는 경우, 파라미터의 전체 ARN 또는 이름을 사용할 수 있습니다. 파라미터가 다른 리전에 있다면 전체 ARN을 지정합니다.

{ "containerDefinitions": [{ "secrets": [{ "name": "environment_variable_name", "valueFrom": "arn:aws:ssm:region:aws_account_id:parameter/parameter_name" }] }] }

환경 변수에 지정된 보안 암호를 사용하여 태스크 정의를 생성하는 방법에 대한 자세한 내용은 콘솔을 사용하여 Amazon ECS 작업 정의 생성 섹션을 참조하세요.

애플리케이션을 업데이트하여 프로그래밍 방식으로 Systems Manager Parameter Store 보안 암호 검색

Systems Manager Parameter Store 파라미터에 저장된 민감한 데이터를 검색하려면 AWS SDK 코드 예제 코드 라이브러리의 Code examples for Systems Manager using AWS SDKs를 참조하세요.