Windows 컨테이너에 gMSA 사용하기 - Amazon Elastic Container Service

Windows 컨테이너에 gMSA 사용하기

Amazon ECS는 그룹 관리형 서비스 계정(gMSA)이라는 특수한 종류의 서비스 계정을 통해 Windows 컨테이너에 대한 Active Directory 인증을 지원합니다.

.NET 애플리케이션과 같은 Windows 기반 네트워크 애플리케이션은 종종 Active Directory를 사용하여 사용자와 서비스 간의 인증 및 권한 부여 관리를 용이하게 합니다. 개발자는 일반적으로 이러한 목적으로 Active Directory와 통합되고 도메인에 가입된 서버에서 실행되도록 애플리케이션을 설계합니다. Windows 컨테이너는 도메인에 가입할 수 없으므로 gMSA와 함께 실행되도록 Windows 컨테이너를 구성해야 합니다.

gMSA로 실행 중인 Windows 컨테이너는 호스트 Amazon EC2 인스턴스에 의존하여 Active Directory 도메인 컨트롤러에서 gMSA 자격 증명을 검색하고 이를 컨테이너 인스턴스에 제공합니다. 자세한 내용은 Windows 컨테이너용 gMSA 생성 섹션을 참조하세요.

Considerations

Windows 컨테이너에 gMSA를 사용할 때는 다음 사항을 고려해야 합니다.

  • 컨테이너 인스턴스에 Amazon ECS 최적화 Windows Server 2016 Full AMI를 사용할 경우 컨테이너 호스트 이름은 자격 증명 사양 파일에 정의된 gMSA 계정 이름과 같아야 합니다. 컨테이너에 대한 호스트 이름을 지정하려면 hostname 컨테이너 정의 파라미터를 사용합니다. 자세한 내용은 네트워크 설정 섹션을 참조하세요.

Prerequisites

다음은 Amazon ECS에서 Windows 컨테이너용 gMSA 기능을 사용하기 위한 전제 조건 입니다.

  • Amazon ECS Windows 컨테이너 인스턴스가 가입할 수 있는 Active Directory입니다. Amazon ECS는 다음을 지원합니다.

    • Amazon EC2에서 호스팅되는 AWS 관리형 Active Directory인 AWS Directory Service입니다. 자세한 내용은 AWS Directory Service 관리 안내서AWS 관리형 Microsoft AD 시작하기를 참조하세요.

    • Amazon ECS Windows 컨테이너 인스턴스가 도메인에 가입할 수 있는 경우 온프레미스 Active Directory입니다. 자세한 내용은 AWS Direct Connect 섹션을 참조하세요.

  • Active Directory에 있는 기존 gMSA 계정입니다. 자세한 내용은 Windows 컨테이너용 gMSA 생성 섹션을 참조하세요.

  • Amazon ECS 태스크를 호스팅하는 Amazon ECS Windows 컨테이너 인스턴스는 Active Directory에 도메인 가입되어 있어야 하며 gMSA 계정에 액세스할 수 있는 Active Directory 보안 그룹의 구성원이어야 합니다.

Amazon ECS에서 gMSA 지원 Windows 컨테이너 설정

Amazon ECS는 gMSA 계정 컨텍스트를 Windows 컨테이너에 전파하는 데 사용되는 gMSA 메타데이터가 포함된 자격 증명 사양 파일을 사용합니다. 자격 증명 사양 파일을 생성하여 태스크 정의의 dockerSecurityOptions 필드에서 참조할 수 있습니다. 자격 증명 사양 파일에 암호가 포함되어 있지 않습니다.

다음은 자격 증명 사양 파일의 예입니다.

{ "CmsPlugins": [ "ActiveDirectory" ], "DomainJoinConfig": { "Sid": "S-1-5-21-2554468230-2647958158-2204241789", "MachineAccountName": "WebApp01", "Guid": "8665abd4-e947-4dd0-9a51-f8254943c90b", "DnsTreeName": "example.com", "DnsName": "example.com", "NetBiosName": "example" }, "ActiveDirectoryConfig": { "GroupManagedServiceAccounts": [ { "Name": "WebApp01", "Scope": "example.com" } ] } }

태스크 정의에서 자격 증명 사양 파일 참조

Amazon ECS에서는 태스크 정의의 dockerSecurityOptions 필드에서 자격 증명 사양 파일을 참조하는 다음과 같은 방법을 지원합니다.

Amazon S3 버킷

Amazon S3 버킷에 자격 증명 사양을 추가한 다음 태스크 정의의 dockerSecurityOptions 필드에서 Amazon S3 버킷의 Amazon 리소스 이름(ARN)을 참조합니다.

{ "family": "", "executionRoleArn": "", "containerDefinitions": [ { "name": "", ... "dockerSecurityOptions": [ "credentialspec:arn:aws:s3:::${BucketName}/${ObjectName}" ], ... } ], ... }

또한 작업에 Amazon S3 버킷에 대한 액세스 권한을 부여하려면 Amazon ECS 작업 실행 IAM 역할에 다음 권한을 인라인 정책으로 추가해야 합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor", "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws:s3:::{bucket_name}", "arn:aws:s3:::{bucket_name}/{object}" ] } ] }

SSM Parameter Store 파라미터

SSM Parameter Store 파라미터에 자격 증명 사양을 추가한 다음 태스크 정의의 dockerSecurityOptions 필드에서 SSM Parameter Store 파라미터의 Amazon 리소스 이름(ARN)을 참조합니다.

{ "family": "", "executionRoleArn": "", "containerDefinitions": [ { "name": "", ... "dockerSecurityOptions": [ "credentialspec:arn:aws:ssm:region:111122223333:parameter/parameter_name" ], ... } ], ... }

또한 작업에 SSM Parameter Store 파라미터에 대한 액세스 권한을 부여하려면 Amazon ECS 작업 실행 IAM 역할에 다음 권한을 인라인 정책으로 추가해야 합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetParameters" ], "Resource": [ "arn:aws:ssm:region:111122223333:parameter/parameter_name" ] } ] }

로컬 파일

로컬 파일의 자격 증명 사양 세부 정보를 사용하여 태스크 정의의 dockerSecurityOptions 필드에 있는 파일 경로를 참조합니다.

{ "family": "", "executionRoleArn": "", "containerDefinitions": [ { "name": "", ... "dockerSecurityOptions": [ "credentialspec:file://CredentialSpecFile.json" ], ... } ], ... }