為公用子網路部署預防性屬性型存取控制 - AWS 方案指引

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

為公用子網路部署預防性屬性型存取控制

由喬爾·阿爾弗雷多·努涅斯·岡薩雷斯(AWS)和塞繆爾·奧爾特加桑喬(AWS)創建

環境:PoC 或試點

技術:安全性、身分識別、合規性;網路;內容交付

AWS 服務:AWS Organizations;AWS Identity and Access Management

Summary

在集中式網路架構中,檢查和邊緣虛擬私有雲 (VPC) 會集中所有入站和輸出流量,例如進出網際網路的流量。不過,這可能會造成瓶頸,或導致達到 AWS 服務配額的限制。與較常見的集中式方法相比,將網路邊緣安全性與 VPC 中的工作負載一起部署,可提供前所未有的擴充性。這稱為分散式邊緣架構。

雖然在工作負載帳戶中部署公有子網路可以帶來好處,但它也會帶來新的安全風險,因為它會增加攻擊面。建議您只在這些 VPC 的公用子網路中部署 Elastic Load Balancing (ELB) 資源,例如應用程式負載平衡器或 NAT 閘道。在專用公有子網路中使用負載平衡器和 NAT 閘道,可協助您對輸入和輸出流量實作精細控制。

屬性為基礎的存取控制 (ABAC) 是根據使用者屬性 (例如部門、工作角色和專案團隊名稱) 建立精細權限的做法。如需詳細資訊,請參閱適用於 AWS 的 ABAC。ABAC 可以為工作負載帳戶中的公用子網路提供護欄。這有助於應用程序團隊保持靈活性,而不會影響基礎架構的安全性。

此模式描述如何透過 AWS Organizations 中的服務控制政策 (SCP) 實作 ABAC,以及 AWS 身分與存取管理 (IAM) 中的政來協助保護公有子網路的安全。您可以將 SCP 套用至組織的成員帳戶或組織單位 (OU)。這些 ABAC 政策允許使用者在目標子網路中部署 NAT 閘道,並防止他們部署其他 Amazon Elastic Compute Cloud (Amazon EC2) 資源,例如 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 對許可的影響。實施安全控制以檢測這些異常。

架構

目標技術堆疊

  • SCP 適用於 AWS 帳戶或 AWS Organizations 中的 OU

  • 下列 IAM 角色:

    • AutomationAdminRole— 用於在實施 SCP 後修改子網路標籤和建立 VPC 資源

    • TestAdminRole— 用於測試 SCP 是否阻止其他 IAM 主體 (包括具有管理存取權的主體) 執行保留給 AutomationAdminRole

目標架構

這些標籤可防止使用者在公用子網路中部署 NAT 閘道以外的資源
  1. 您可以在目標帳戶中建立 AutomationAdminRole IAM 角色。此角色具有管理網路資源的權限。請注意下列此角色專屬的權限:

    • 此角色可以建立 VPC 和公用子網路。

    • 此角色可修改目標子網路的標籤指派。

    • 此角色可以管理自己的權限。

  2. 在 AWS Organizations 中,您可以將 SCP 套用到目標 AWS 帳戶或 OU。如需原則範例,請參閱此模式中的其他資訊

  3. CI/CD 管線中的使用者或工具可以擔任將標籤套用至目SubnetType標子網路的AutomationAdminRole角色。

  4. 透過假設其他 IAM 角色,您組織中已授權的 IAM 主體可以管理目標子網路中的 NAT 閘道,以及 AWS 帳戶中其他允許的聯網資源,例如路由表。使用 IAM 政策授予這些許可。如需詳細資訊,請參閱 Amazon VPC 的身分識別和存取管理

自動化和規模

為協助保護公有子網路,必須套用對應的 AWS 標籤。套用 SCP 之後,NAT 閘道是授權使用者可以在具有標籤的子網路中建立的唯一 Amazon EC2 資源類型。SubnetType:IFA (IFA指面向網際網路的資產。) SCP 可防止建立其他 Amazon EC2 資源,例如執行個體和彈性網路界面。 我們建議您使用具有AutomationAdminRole角色的 CI/CD 管線來建立 VPC 資源,以便將這些標籤正確套用至公用子網路。

工具

AWS 服務

  • AWS Identity and Access Management (IAM) 可透過控制誰經過身份驗證和授權使用 AWS 資源,協助您安全地管理對 AWS 資源的存取。

  • AWS Organizations Organization 是一種帳戶管理服務,可協助您將多個 AWS 帳戶合併到您建立並集中管理的組織中。在 AWS Organizations 中,您可以實作服務控制政策 (SCP),這是一種可用來管理組織中許可的政策類型。

  • Amazon Virtual Private Cloud (Amazon VPC) 可協助您在已定義的虛擬網路中啟動 AWS 資源。這個虛擬網路類似於您在自己的資料中心中操作的傳統網路,並具有使用 AWS 可擴展基礎設施的好處。

史诗

任務描述所需技能

建立測試管理員角色。

建立在目標 AWS 帳戶TestAdminRole中命名的 IAM 角色。將 AdministratorAccessAWS 受管 IAM 政策附加到新角色。如需指示,請參閱 IAM 說明文件中的建立角色以將許可委派給 IAM 使用者

AWS 管理員

建立自動化管理員角色。

  1. 建立在目標 AWS 帳戶AutomationAdminRole中命名的 IAM 角色。

  2. AdministratorAccessAWS 受管 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. 將 SCP 連接到目標 AWS 帳戶或 OU。如需指示,請參閱 AWS Organizations 文件中的連接和卸離服務控制政策

AWS 管理員
任務描述所需技能

建立 VPC 或子網路。

  1. 假設目標 AWS 帳戶中的TestAdminRole角色。

  2. 嘗試在現有 VPC 中建立 VPC 或新的公用子網路。如需指示,請參閱 Amazon VPC 文件中的建立 VPC、子網路和其他 VPC 資源。您不應該能夠建立這些資源。

  3. 假設AutomationAdminRole角色,然後重試上一個步驟。現在,您應該可以建立網路資源。

AWS 管理員

管理標籤。

  1. 假設目標 AWS 帳戶中的TestAdminRole角色。

  2. SubnetType:IFA標籤新增至可用的公用子網路。您應該可以添加此標籤。如需有關如何透過 AWS Command Line Interface (AWS CLI) (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。如需指示,請參閱 AWS Organizations 文件中的卸離 SCP

  2. 刪除 SCP。如需指示,請參閱刪除 SCP (AWS Organizations 文件)。

  3. 刪除AutomationAdminRole角色和TestAdminRole角色。如需指示,請參閱 IAM 文件中的刪除角色

  4. 刪除您為此解決方案建立的所有網路資源,例如 VPC 和子網路。

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": "*" } ] }