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 の使用」を参照してください。

注記

この機能は、Fargate の Windows コンテナではサポートされていません。

考慮事項

Windows コンテナに gMSA を使用する場合は、次の点を考慮する必要があります。

  • コンテナインスタンスに Amazon ECSに最適化されたWindows Server 2016 Full AMI を使用する場合、コンテナのホスト名は、認証情報仕様ファイルで定義されている gMSA アカウント名と同じである必要があります。コンテナのホスト名を指定するには、hostname コンテナ定義パラメータを使用します。詳細については、「ネットワーク設定」を参照してください。

前提条件

Windows コンテナ用 gMSA 機能を Amazon ECS で使用するための前提条件を次に示します。

  • Amazon ECS Windowsコンテナインスタンスが参加できるアクティブディレクトリ。Amazon ECSは以下をサポートしています。

    • AWS Directory Service は、Amazon EC2にホストされた AWS マネージドアクティブディレクトリです。詳細については、「AWS Directory Service 管理ガイド」の「AWS Managed Microsoft AD の開始方法」を参照してください。

    • オンプレミスの Active Directory (Amazon ECS Windows コンテナインスタンスがドメインに参加できる限り)。詳細については、「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 ECS タスク実行 IAM ロール に追加して、タスクに Amazon S3 バケットへのアクセスを付与する必要があります。

{ "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 パラメータストアパラメータ

認証情報仕様を SSM パラメータストアパラメータに追加し、タスク定義の dockerSecurityOptions フィールドで SSM パラメータストアパラメータの Amazon リソースネーム (ARN) を参照します。

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

また、次のアクセス権限をインラインポリシーとして Amazon ECS タスク実行 IAM ロール に追加して、タスクに SSM パラメータストアパラメータへのアクセス権を付与する必要があります。

{ "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" ], ... } ], ... }