パブリックサブネットに予防的属性ベースのアクセスコントロールをデプロイする - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

パブリックサブネットに予防的属性ベースのアクセスコントロールをデプロイする

作成者: Joel Alfredo Nunez Gonzalez (AWS) と Samuel Ortega Sancho (AWS)

環境:PoC またはパイロット

テクノロジー: セキュリティ、アイデンティティ、コンプライアンス、ネットワーク、コンテンツ配信

AWS サービス: AWS 組織、AWSアイデンティティとアクセスの管理

[概要]

一元化されたネットワークアーキテクチャでは、検査およびエッジ仮想プライベートクラウド (VPCs) は、インターネットとの間で送受信されるトラフィックなど、すべてのインバウンドトラフィックとアウトバウンドトラフィックを集中させます。ただし、これによりボトルネックが発生したり、AWSサービスクォータの制限に達する可能性があります。ネットワークエッジセキュリティをワークロードと共にデプロイすることで、より一般的で一元化されたアプローチと比較して、前例のないスケーラビリティVPCsが得られます。これは分散型エッジアーキテクチャと呼ばれます。

パブリックサブネットをワークロードアカウントにデプロイすることには利点がありますが、アタックサーフェスが増えるため、新たなセキュリティリスクも生じます。Application Load Balancer やゲートウェイなどの Elastic Load Balancing (ELB) リソースのみを、これらの のパブリックサブネットにデプロイすることをお勧めしますVPCs。 NAT専用のパブリックサブネットでロードバランサーとNATゲートウェイを使用すると、インバウンドトラフィックとアウトバウンドトラフィックをきめ細かく制御できます。

属性ベースのアクセスコントロール (ABAC) は、部門、ジョブロール、チーム名などのユーザー属性に基づいてきめ細かなアクセス許可を作成する方法です。詳細については、ABACAWS「」を参照してください。ABAC は、ワークロードアカウントのパブリックサブネットにガードレールを提供できます。これにより、アプリケーションチームは、」インフラストラクチャのセキュリティを損なうことなく機敏に対応できます。

このパターンでは、AWSIdentity and Access Management (SCP) の Organizations および ポリシーにサービスコントロールポリシー () ABACを通じて を実装することで、パブリックサブネットを保護する方法について説明しますIAM。 AWS https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.htmlSCP を組織のメンバーアカウントまたは組織単位 (OU) に適用します。これらのABACポリシーにより、ユーザーはターゲットサブネットにNATゲートウェイをデプロイし、EC2インスタンスやElastic Network Interface などの他の Amazon Elastic Compute Cloud (Amazon EC2) リソースをデプロイできなくなります。  

前提条件と制限

前提条件

  • Organizations 内のAWS組織

  • AWS Organizations ルートアカウントへの管理アクセス

  • 組織内で、 をテストするためのアクティブなメンバーアカウントまたは OU SCP

制約事項

  • このソリューションSCPの は、AWSサービスにリンクされたロールを使用するサービスがターゲットサブネットにリソースをデプロイすることを妨げるものではありません。これらのサービスの例としては、Elastic Load Balancing (ELB)、Amazon Elastic Container Service (Amazon )、Amazon Relational Database Service (Amazon ECS) などがありますRDS。詳細については、AWS「 Organizations ドキュメント」のSCP「アクセス許可への影響」を参照してください。これらの例外を検出するためのセキュリティコントロールを実装します。

アーキテクチャ

ターゲットテクノロジースタック

  • SCP AWS Organizations のAWSアカウントまたは OU に適用される

  • 次のIAMロール:

    • AutomationAdminRole – を実装した後にサブネットタグを変更し、VPCリソースを作成するために使用されます。 SCP

    • TestAdminRole – SCPが管理アクセスを持つプリンシパルを含む他のIAMプリンシパルが 用に予約されたアクションを実行できないかどうかをテストするために使用されます。 AutomationAdminRole

ターゲット アーキテクチャ

タグにより、ユーザーはパブリックサブネットにNATゲートウェイ以外のリソースをデプロイできなくなります。
  1. ターゲットアカウントにAutomationAdminRoleIAMロールを作成します。このロールにはネットワークリソースを管理する権限があります。このロール専用の以下の権限に注意します。

    • このロールは、 VPCsおよび パブリックサブネットを作成できます。

    • このロールはターゲットサブネットのタグアサインを変更できます。

    • このロールはその自らの権限を管理できます。

  2. AWS Organizations では、 SCPをターゲットAWSアカウントまたは OU に適用します。サンプルポリシーについて、このパターンの「追加情報」 を参照してください。

  3. CI/CD パイプライン内のユーザーまたはツールは、AutomationAdminRoleのロールを引き受けて、 SubnetTypeのタグをターゲットサブネットに適用します。

  4. 他のIAMロールを引き受けることで、組織内の許可されたIAMプリンシパルは、ターゲットサブネット内のNATゲートウェイと、ルートテーブルなど、AWSアカウント内の許可されたその他のネットワークリソースを管理できます。IAM ポリシーを使用して、これらのアクセス許可を付与します。詳細については、「Amazon のアイデンティティとアクセスの管理VPC」を参照してください。

自動化とスケール

パブリックサブネットを保護するために、対応するAWSタグを適用する必要があります。を適用した後SCP、NATゲートウェイは、権限のあるユーザーが SubnetType:IFA タグを持つサブネットで作成できる唯一の Amazon EC2リソースです。 (IFA はインターネット向けアセット を意味します)。は、インスタンスやElastic Network Interface などの他の Amazon EC2リソースの作成SCPを防止します。これらのタグがパブリックサブネットに適切に適用されるように、 AutomationAdminRoleロールを引き受ける CI/CD パイプラインを使用してVPCリソースを作成することをお勧めします。

ツール

AWS サービス

  • AWS Identity and Access Management (IAM) は、誰が認証され、誰に使用を許可されているかを制御することで、AWSリソースへのアクセスを安全に管理できます。

  • AWS Organizations は、複数のアカウントを作成および一元管理する組織に集約するのに役立つAWSアカウント管理サービスです。AWS Organizations では、サービスコントロールポリシー (SCPs) を実装できます。これは、組織内のアクセス許可を管理するために使用できるポリシーの一種です。

  • Amazon Virtual Private Cloud (Amazon VPC) は、定義した仮想ネットワークにAWSリソースを起動するのに役立ちます。この仮想ネットワークは、独自のデータセンターで運用する従来のネットワークに似ており、 のスケーラブルなインフラストラクチャを使用する利点がありますAWS。

エピック

タスク説明必要なスキル

テスト管理者ロールを作成します。

ターゲットAWSアカウントに という名前TestAdminRoleのIAMロールを作成します。AdministratorAccess AWS マネージドIAMポリシーを新しいロールにアタッチします。手順については、 IAMドキュメントの「アクセス許可をIAMユーザーに委任するロールの作成」を参照してください。

AWS 管理者

自動化管理者ロールを作成します。

  1. ターゲットAWSアカウントに という名前AutomationAdminRoleのIAMロールを作成します。

  2. AdministratorAccess AWS マネージドIAMポリシーを新しいロールにアタッチします。

以下は、000000000000 アカウントからのロールをテストするために使用できる、信頼ポリシーの例です。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::000000000000:root" ] }, "Action": "sts:AssumeRole", "Condition": {} } ] }
AWS 管理者

を作成してアタッチしますSCP。

  1. 追加情報」 セクションにあるサンプルコードを使用して、セキュリティコントロールポリシーを作成します。手順については、AWS「 Organizations ドキュメント」の「 の作成SCP」を参照してください。

  2. をターゲットAWSアカウントまたは OU SCPにアタッチします。手順については、「 Organizations ドキュメント」の「サービスコントロールポリシーのアタッチとデタッチ」を参照してください。 AWS

AWS 管理者
タスク説明必要なスキル

VPC または サブネットを作成します。

  1. ターゲットAWSアカウントのTestAdminRoleロールを想定します。

  2. 既存の に VPCまたは新しいパブリックサブネットを作成してみてくださいVPC。手順については、Amazon VPCドキュメントのVPC「、サブネット、およびその他のVPCリソースを作成する」を参照してください。これらのリソースは作成できないはずです。

  3. AutomationAdminRole のロールを引き受けて、前のステップをやり直します。これでネットワークリソースを作成できます。

AWS 管理者

タグを管理します。

  1. ターゲットAWSアカウントのTestAdminRoleロールを想定します。

  2. 使用可能なパブリックサブネットに SubnetType:IFA タグを追加します。このタグは追加できるはずです。AWS コマンドラインインターフェイス (AWS CLI) を介してタグを追加する方法については、 AWS CLI コマンドリファレンス 「タグの作成」を参照してください。

  3. 認証情報を変更することなく、このサブネットにアサインされた SubnetType:IFA のタグを変更します。このタグは変更できないはずです。

  4. AutomationAdminRole のロールを引き受けて、前のステップをやり直します。このロールは、このタグを追加したり変更したりできるはずです。

AWS 管理者

ターゲットサブネットでリソースをデプロイします。

  1. TestAdminRole のロールを引き受けます。

  2. SubnetType:IFA タグを持つパブリックサブネットの場合は、EC2インスタンスを作成してみてください。手順については、Amazon EC2ドキュメントの「インスタンスを起動する」を参照してください。このサブネットでは、NATゲートウェイ以外の Amazon EC2リソースを作成、変更、または削除することはできません。

  3. 同じサブネットで、NATゲートウェイを作成します。手順については、Amazon VPCドキュメントのNAT「ゲートウェイの作成」を参照してください。このサブネットでNATゲートウェイを作成、変更、または削除できるはずです。

AWS 管理者

AutomationAdminRole ロールを管理します。

  1. TestAdminRole のロールを引き受けます。

  2. AutomationAdminRole のロールを変更してみます。手順については、IAMドキュメントの「ロールの変更」を参照してください。このロールは変更できないはずです。

  3. AutomationAdminRole のロールを引き受けて、前のステップをやり直します。これでロールを変更できます。

AWS 管理者
タスク説明必要なスキル

デプロイされたリソースをクリーンアップします。

  1. AWS アカウントまたは OU SCPから をデタッチします。手順については、AWSOrganizations ドキュメントの「 のデタッチSCP」を参照してください。

  2. を削除しますSCP。手順については、「 (AWS Organizations ドキュメント) の削除SCP」を参照してください。

  3. AutomationAdminRole のロールと TestAdminRole のロールを削除します。手順については、IAMドキュメントの「ロールの削除」を参照してください。

  4. このソリューション用に作成した VPCsやサブネットなどのネットワークリソースをすべて削除します。

AWS 管理者

関連リソース

AWS ドキュメント

その他のAWSリファレンス

追加情報

以下のサービスコントロールポリシーは、このアプローチを組織でテストするために使用できる例です。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyVPCActions", "Effect": "Deny", "Action": [ "ec2:CreateVPC", "ec2:CreateRoute", "ec2:CreateSubnet", "ec2:CreateInternetGateway", "ec2:DeleteVPC", "ec2:DeleteRoute", "ec2:DeleteSubnet", "ec2:DeleteInternetGateway" ], "Resource": [ "arn:aws:ec2:*:*:*" ], "Condition": { "StringNotLike": { "aws:PrincipalARN": ["arn:aws:iam::*:role/AutomationAdminRole"] } } }, { "Sid": "AllowNATGWOnIFASubnet", "Effect": "Deny", "NotAction": [ "ec2:CreateNatGateway", "ec2:DeleteNatGateway" ], "Resource": [ "arn:aws:ec2:*:*:subnet/*" ], "Condition": { "ForAnyValue:StringEqualsIfExists": { "aws:ResourceTag/SubnetType": "IFA" }, "StringNotLike": { "aws:PrincipalARN": ["arn:aws:iam::*:role/AutomationAdminRole"] } } }, { "Sid": "DenyChangesToAdminRole", "Effect": "Deny", "NotAction": [ "iam:GetContextKeysForPrincipalPolicy", "iam:GetRole", "iam:GetRolePolicy", "iam:ListAttachedRolePolicies", "iam:ListInstanceProfilesForRole", "iam:ListRolePolicies", "iam:ListRoleTags" ], "Resource": [ "arn:aws:iam::*:role/AutomationAdminRole" ], "Condition": { "StringNotLike": { "aws:PrincipalARN": ["arn:aws:iam::*:role/AutomationAdminRole"] } } }, { "Sid": "allowbydefault", "Effect": "Allow", "Action": "*", "Resource": "*" } ] }