翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
属性ベースのアクセス制御 (ABAC) を使用してパブリックサブネットを保護
作成者: Joel Alfredo Nunez Gonzalez (AWS) と Samuel Ortega Sancho (AWS)
環境:PoC またはパイロット | テクノロジー: セキュリティ、アイデンティティ、コンプライアンス、ネットワーク、コンテンツ配信 | AWS サービス: AWS Organizations、AWS 識別とアクセス管理 |
[概要]
集中型ネットワークアーキテクチャでは、検査とエッジ仮想プライベートクラウド (VPC) が、インターネットとの間のトラフィックなどの、すべてのインバウンドトラフィックとアウトバウンドトラフィックを集中させます。ただし、これによりボトルネックが発生したり、AWS Service Quotasの制限に達したりする可能性があります。ネットワークエッジセキュリティを VPC のワークロードと一緒にデプロイして、一般的な集中型アプローチと比較して、これまでにないスケーラビリティを提供します。これは分散型エッジアーキテクチャと呼ばれます。
パブリックサブネットをワークロードアカウントにデプロイすることには利点がありますが、アタックサーフェスが増えるため、新たなセキュリティリスクも生じます。これらの VPC のパブリックサブネットでは、アプリケーションロードバランサーや NAT ゲートウェイなどのElastic Load Balancing (ELB) リソースのみをデプロイすることを推奨します。専用のパブリックサブネットでロードバランサーと NAT ゲートウェイの使用は、インバウンドトラフィックとアウトバウンドトラフィックのきめ細かな制御に役立ちます。
属性ベースのアクセス制御 (ABAC)は、部署、役職、チーム名など、ユーザーの属性に基づいて、きめ細かなアクセス許可を設定する方法です。詳細については、「AWS のための ABAC」
このパターンでは、AWS Organization の「サービスコントロールポリシー (SCP)」 と AWS 識別と管理(IAM) の「ポリシー」 を通じて ABAC を実装することによる、パブリックサブネットを保護する方法を説明します。SCP は、組織のメンバーアカウントまたは組織単位 (OU) のいずれかに適用されます。これらの ABAC ポリシーは、ユーザーがターゲットサブネットに NAT ゲートウェイをデプロイすることを許可し、EC2 インスタンスや Elastic Network Interface (ENI) などの他の Amazon Elastic Compute Cloud (Amazon EC2) リソースをデプロイすることを禁止します。
前提条件と制限
前提条件
AWS Organizations 内の組織
AWS Organizations ルートアカウントに対する管理アクセス
組織での、SCP をテストするためのアクティブメンバーアカウントまたは OU
制約事項
このソリューションの SCP は、サービスにリンクされたロールを使用する AWS サービスが、ターゲットサブネットにリソースをデプロイすることを阻止しません。これらのサービスの例としては、Elastic Load Balancing (ELB)、Amazon Elastic Container Service (Amazon ECS)、および Amazon Relational Database Service (Amazon RDS) があります。詳細については、AWS Organizations のドキュメントの「許可に対する SCP の影響」 を参照してください。これらの例外を検出するためのセキュリティコントロールを実装します。
アーキテクチャ
ターゲットテクノロジースタック
AWS アカウントまたは AWS Organizations の OU に適用される SCP
次の IAM ロールは:
AutomationAdminRole
— SCPの実装後にサブネットタグを変更し、VPC リソースを作成するために使用されますTestAdminRole
— SCP が、管理者権限を持つプリンシパルを含む他の IAM プリンシパルが、AutomationAdminRole
向けのアクションを実行することを妨げているかどうかをテストするために使用されます
ターゲットアーキテクチャ
ターゲットアカウントに
AutomationAdminRole
IAMロールを作成します。このロールにはネットワークリソースを管理する権限があります。このロール専用の以下の権限に注意します。このロールは VPC とパブリックサブネットを作成できます。
このロールはターゲットサブネットのタグアサインを変更できます。
このロールはその自らの権限を管理できます。
AWS Organizations では、ターゲットの AWS アカウントまたは OU に SCP を適用します。サンプルポリシーについて、このパターンの「追加情報」 を参照してください。
CI/CD パイプライン内のユーザーまたはツールは、
AutomationAdminRole
のロールを引き受けて、SubnetType
のタグをターゲットサブネットに適用します。他の IAM ロールを引き受けることで、組織の IAM プリンシパルは、ターゲットサブネットの NAT ゲートウェイ、およびルートテーブルなどの AWS アカウントで許可されているその他のネットワークリソースを管理できます。IAMポリシ―を使用して、これらの許可を与します。詳細については、「Amazon VPCの識別とアクセス管理」を参照してください。
自動化とスケール
パブリックサブネットを保護するには、対応する「AWS タグ」 を適用する必要があります。SCP が適用された後、承認済のユーザーが SubnetType:IFA
タグを持つサブネットに作成できる Amazon EC2 リソースの種類は NAT ゲートウェイだけです(IFA
はインターネット向けのアセットを指します)。SCP は、インスタンスや ENI などの、他の Amazon EC2 リソースの作成を阻止します。推奨は、これらのタグがパブリックサブネットに正しく適用されるように、VPC リソースを作成するAutomationAdminRole
のロールを引き受ける CI/CD パイプラインを使用することです。
ツール
AWS サービス
「AWS Identity and Access Management (IAM)」は、AWS リソースへのアクセスを安全に管理し、誰が認証され、使用する権限があるかを制御するのに役立ちます。
AWS Organizations は、作成して一元管理している複数の AWS アカウントを1つの組織に統合するためのアカウント管理サービスです。AWS Organizations では、サービスコントロールポリシー (SCP) は、組織のアクセス許可の管理に使用できる組織ポリシーの一種です。
Amazon Virtual Private Cloud (Amazon VPC) を使用すると、定義した仮想ネットワーク内で AWS リソースを起動できます。この仮想ネットワークは、お客様自身のデータセンターで運用されていた従来のネットワークに似ていますが、AWS のスケーラブルなインフラストラクチャを使用できるというメリットがあります。
エピック
タスク | 説明 | 必要なスキル |
---|---|---|
テスト管理者ロールを作成します。 | 管理者アカウントで、 | AWS 管理者 |
自動化管理者ロールを作成します。 |
以下は、
| AWS 管理者 |
SCP を作成して添付します。 |
| AWS 管理者 |
タスク | 説明 | 必要なスキル |
---|---|---|
VPC またはサブネットを作成します。 |
| AWS 管理者 |
タグを管理します。 |
| AWS 管理者 |
ターゲットサブネットでリソースをデプロイします。 |
| AWS 管理者 |
AutomationAdminRole ロールを管理します。 |
| AWS 管理者 |
タスク | 説明 | 必要なスキル |
---|---|---|
デプロイされたリソースをクリーンアップします。 | AWS 管理者 |
関連リソース
AWS ドキュメント
「追加の AWS リファレンス」
「AWS Organizations のサービスコントロールポリシーを使用して、認証に使われるリソースタグを保護
」 (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": "*" } ] }