Amazon ECS Service Connect トラフィックを暗号化する - Amazon Elastic Container Service

Amazon ECS Service Connect トラフィックを暗号化する

Amazon ECS Service Connect は、Amazon ECS サービスの Transport Layer Security (TLS) 証明書による自動トラフィック暗号化をサポートしています。Amazon ECS サービスを AWS Private Certificate Authority(AWS Private CA) に向けると、Amazon ECS Service Connect 間のトラフィックを暗号化するための TLS 証明書が Amazon ECS によって自動的にプロビジョニングされます。Amazon ECS は、トラフィックの暗号化に使用される TLS 証明書を生成、ローテーション、および配布します。

Service Connect による自動トラフィック暗号化は、業界をリードする暗号化機能を使用してサービス間の通信を保護し、セキュリティ要件を満たすのに役立ちます。256-bit ECDSA および 2048-bit RSA 暗号化で AWS Private Certificate Authority TLS 証明書と暗号化をサポートしています。デフォルトでは、TLS 1.3 はサポートされていますが、TLS 1.0 ~ 1.2 はサポートされていません。また、プライベート証明書と署名キーを完全に制御できるため、コンプライアンス要件を満たすのに役立ちます。

注記

TLS 1.3 を使用するには、ターゲットのリスナーでも有効にする必要があります。

Amazon ECS エージェントを通過するインバウンドトラフィックとアウトバウンドトラフィックのみが暗号化されます。

AWS Private Certificate Authority 証明書および Service Connect

証明書を発行するには、追加の IAM アクセス許可が必要です。Amazon ECS には、一連のアクセス許可の概要を示すマネージドリソース信頼ポリシーが用意されています。このポリシーの詳細については、「AmazonECSInfrastructureRolePolicyForServiceConnectTransportLayerSecurity」を参照してください。

Service Connect 用の AWS Private Certificate Authority モード

AWS Private Certificate Authority は汎用モードと短時間有効モードの 2 つのモードで実行できます。

  • 汎用 — 任意の有効期限を設定できる証明書を発行します。

  • 短い有効期間 — 最大有効期間が 7 日間の証明書。

Amazon ECS は両方のモードをサポートしていますが、有効期間の短い証明書を使用することをお勧めします。デフォルトでは、証明書は 5 日ごとにローテーションされ、短期モードで実行すると一般的な用途に比べてコストを大幅に節約できます。

Service Connect は証明書の失効をサポートしておらず、代わりに証明書を頻繁にローテーションする短い有効期間の証明書を利用します。Secrets Managerマネージドローテーションを使用してローテーション頻度を変更したり、シークレットを無効化または削除したりする権限がありますが、これを行うと次のような結果が生じる可能性があります。

  • ローテーション頻度の短縮 - ローテーション頻度を短くすると、AWS Private CA、AWS KMS および Secrets Manager、Auto Scaling のローテーションのワークロードが増加するため、コストが高くなります。

  • ローテーション頻度が長い - ローテーション頻度が 7 日を超えると、アプリケーションの通信は失敗します。

  • シークレットの削除 - シークレットを削除するとローテーションが失敗し、お客様のアプリケーション通信に影響があります。

シークレットローテーションに失敗すると、AWS CloudTrailRotationFailed イベントがに公開されます。RotationFailed 用の CloudWatch アラームを設定することもできます。

重要

シークレットにレプリカリージョンを追加しないでください。これにより、Amazon ECS にはリージョンをレプリケーションから削除するアクセス許可がないため、Amazon ECS はシークレットを削除できなくなります。レプリケーションを既に追加している場合は、次のコマンドを実行します。

aws secretsmanager remove-regions-from-replication \ --secret-id SecretId \ --remove-replica-regions region-name
下位認証機関

AWS Private CA、ルートまたは下位を Service Connect TLS に導入して、サービスのエンドエンティティ証明書を発行できます。提供された発行者は、あらゆる場所で署名者および信頼の根源として扱われます。エンドエンティティ証明書は、アプリケーションのさまざまな部分について、さまざまな下位 CA から発行できます。AWS CLI を使用する際に、信頼チェーンを確立する CA の Amazon リソースネーム (ARN) を指定します。

オンプレミス認証機関

オンプレミス CA を使用するには、AWS Private Certificate Authority で下位 CA を作成して設定します。これにより、Amazon ECS ワークロード用に発行されたすべての TLS 証明書が、オンプレミスで実行するワークロードとトラストチェーンを共有し、安全に接続できるようになります。

重要

AWS Private CA に必要なタグ AmazonECSManaged : true を自分に追加してください。

Infrastructure as Code

Infrastructure as Code (IaC) ツールで Service Connect TLS を使用する場合は、サービスがドレイン状態のままになるという問題を避けるため、依存関係を正しく設定することが重要です。AWS KMS キーが提供されている場合は、Amazon ECS サービスを終了した後、IAM ロールと AWS Private CA 依存関係を削除する必要があります。

Service Connect および AWS Key Management Service

AWS Key Management Service を使用して、Service Connect リソースを暗号化および復号化できます。AWS KMS は、AWS によってデータを保護する暗号キーを作成および管理できるサービスです。

Service Connect で AWS KMS を使用する場合は、AWS が管理する AWS 所有キーを使用するか、既存の AWS KMS キーを選択できます。新しい AWS KMS キーを作成して使用することもできます。

独自の暗号化キーを提供する

独自のキーマテリアルを提供することも、AWS Key Management Service を通じて外部キーストアを使用して独自のキーを AWS KMS へインポートし、Amazon ECS Service Connect でそのキーの Amazon リソースネーム (ARN) を指定することもできます。

AWS KMS ポリシーの例を次に示します。すべての [ユーザー入力] を独自の値に置き換えます。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "id", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/role-name" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey", "kms:GenerateDataKeyPair" ], "Resource": "*" } ] }

キーポリシーの詳細については、「AWS Key Management Service デベロッパーガイド」の「キーポリシーの作成」を参照してください。

注記

Service Connect は対称暗号化 AWS KMS キーのみをサポートします。他のタイプの AWS KMS キーを使用して Service Connect リソースを暗号化することはできません。AWS KMS キーが対称暗号化キーかどうかを判別するには、「非対称 KMS キーを識別する」を参照してください。

AWS Key Management Service 対称暗号化キーの詳細については、「AWS Key Management Service デベロッパーガイド」の「対称暗号化 AWS KMS キー」を参照してください。