翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
パブリックサブネットに予防的属性ベースのアクセスコントロールをデプロイする
作成者: 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
このパターンでは、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リソースを作成するために使用されます。 SCPTestAdminRole
– SCPが管理アクセスを持つプリンシパルを含む他のIAMプリンシパルが 用に予約されたアクションを実行できないかどうかをテストするために使用されます。AutomationAdminRole
ターゲット アーキテクチャ
ターゲットアカウントに
AutomationAdminRole
IAMロールを作成します。このロールにはネットワークリソースを管理する権限があります。このロール専用の以下の権限に注意します。このロールは、 VPCsおよび パブリックサブネットを作成できます。
このロールはターゲットサブネットのタグアサインを変更できます。
このロールはその自らの権限を管理できます。
AWS Organizations では、 SCPをターゲットAWSアカウントまたは OU に適用します。サンプルポリシーについて、このパターンの「追加情報」 を参照してください。
CI/CD パイプライン内のユーザーまたはツールは、
AutomationAdminRole
のロールを引き受けて、SubnetType
のタグをターゲットサブネットに適用します。他の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アカウントに という名前 | AWS 管理者 |
自動化管理者ロールを作成します。 |
以下は、
| AWS 管理者 |
を作成してアタッチしますSCP。 |
| AWS 管理者 |
タスク | 説明 | 必要なスキル |
---|---|---|
VPC または サブネットを作成します。 |
| AWS 管理者 |
タグを管理します。 |
| AWS 管理者 |
ターゲットサブネットでリソースをデプロイします。 |
| AWS 管理者 |
AutomationAdminRole ロールを管理します。 |
| AWS 管理者 |
タスク | 説明 | 必要なスキル |
---|---|---|
デプロイされたリソースをクリーンアップします。 |
| 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": "*" } ] }