Menggunakan kebijakan berbasis identitas (kebijakan IAM) untuk AWS Control Tower - AWSControl Tower

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menggunakan kebijakan berbasis identitas (kebijakan IAM) untuk AWS Control Tower

Topik ini memberikan contoh kebijakan berbasis identitas yang menunjukkan bagaimana administrator akun dapat melampirkan kebijakan izin ke identitas IAM (yaitu, pengguna, grup, dan peran) dan dengan demikian memberikan izin untuk melakukan operasi pada sumber daya AWS Control Tower.

penting

Kami menyarankan Anda terlebih dahulu meninjau topik pengantar yang menjelaskan konsep dasar dan opsi yang tersedia bagi Anda untuk mengelola akses ke sumber daya AWS Control Tower Anda. Untuk informasi selengkapnya, lihat Ikhtisar mengelola izin akses ke sumber daya AWS Control Tower Anda.

AWS ControlTowerAdmin peran

Peran ini memberi AWS Control Tower akses ke infrastruktur yang penting untuk mempertahankan landing zone. AWS ControlTowerAdminPeran tersebut membutuhkan kebijakan terkelola terlampir dan kebijakan kepercayaan peran untuk peran IAM. Kebijakan kepercayaan peran adalah kebijakan berbasis sumber daya, yang menentukan prinsip mana yang dapat mengambil peran tersebut.

Berikut contoh cuplikan untuk kebijakan kepercayaan peran ini:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "controltower.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Untuk membuat peran ini dari AWS CLI, dan memasukkannya ke dalam file bernamatrust.json, berikut adalah contoh perintah CLI:

aws iam create-role --role-name AWSControlTowerAdmin --path /service-role/ --assume-role-policy-document file://trust.json

Peran ini membutuhkan dua kebijakan IAM.

  1. Kebijakan inline, misalnya:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:DescribeAvailabilityZones", "Resource": "*" } ] }
  2. Kebijakan terkelola yang mengikuti, yaituAWS ControlTowerServiceRolePolicy.

AWS ControlTowerServiceRolePolicy

AWS ControlTowerServiceRolePolicyIni adalah kebijakan AWS terkelola yang mendefinisikan izin untuk membuat dan mengelola sumber daya AWS Control Tower, seperti AWS CloudFormation stackset dan instance tumpukan, file AWS CloudTrail log, agregator konfigurasi untuk AWS Control Tower, AWS Organizations serta akun dan unit organisasi (OU) yang diatur oleh AWS Control Tower.

Pembaruan kebijakan terkelola ini dirangkum dalam tabel,Kebijakan terkelola untuk AWS Control Tower.

Untuk informasi selengkapnya, lihat AWSControlTowerServiceRolePolicydi Panduan Referensi Kebijakan Terkelola AWS.

Nama Kebijakan Terkelola: AWS ControlTowerServiceRolePolicy

Artefak JSON untuk AWS ControlTowerServiceRolePolicy adalah sebagai berikut:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudformation:CreateStack", "cloudformation:CreateStackInstances", "cloudformation:CreateStackSet", "cloudformation:DeleteStack", "cloudformation:DeleteStackInstances", "cloudformation:DeleteStackSet", "cloudformation:DescribeStackInstance", "cloudformation:DescribeStacks", "cloudformation:DescribeStackSet", "cloudformation:DescribeStackSetOperation", "cloudformation:ListStackInstances", "cloudformation:UpdateStack", "cloudformation:UpdateStackInstances", "cloudformation:UpdateStackSet" ], "Resource": [ "arn:aws:cloudformation:*:*:type/resource/AWS-IAM-Role" ] }, { "Effect": "Allow", "Action": [ "account:EnableRegion", "account:ListRegions", "account:GetRegionOptStatus" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "cloudformation:CreateStack", "cloudformation:CreateStackInstances", "cloudformation:CreateStackSet", "cloudformation:DeleteStack", "cloudformation:DeleteStackInstances", "cloudformation:DeleteStackSet", "cloudformation:DescribeStackInstance", "cloudformation:DescribeStacks", "cloudformation:DescribeStackSet", "cloudformation:DescribeStackSetOperation", "cloudformation:GetTemplate", "cloudformation:ListStackInstances", "cloudformation:UpdateStack", "cloudformation:UpdateStackInstances", "cloudformation:UpdateStackSet" ], "Resource": [ "arn:aws:cloudformation:*:*:stack/AWSControlTower*/*", "arn:aws:cloudformation:*:*:stack/StackSet-AWSControlTower*/*", "arn:aws:cloudformation:*:*:stackset/AWSControlTower*:*", "arn:aws:cloudformation:*:*:stackset-target/AWSControlTower*/*" ] }, { "Effect": "Allow", "Action": [ "cloudtrail:CreateTrail", "cloudtrail:DeleteTrail", "cloudtrail:GetTrailStatus", "cloudtrail:StartLogging", "cloudtrail:StopLogging", "cloudtrail:UpdateTrail", "cloudtrail:PutEventSelectors", "logs:CreateLogStream", "logs:PutLogEvents", "logs:PutRetentionPolicy" ], "Resource": [ "arn:aws:logs:*:*:log-group:aws-controltower/CloudTrailLogs:*", "arn:aws:cloudtrail:*:*:trail/aws-controltower*" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::aws-controltower*/*" ] }, { "Effect": "Allow", "Action": [ "sts:AssumeRole" ], "Resource": [ "arn:aws:iam::*:role/AWSControlTowerExecution", "arn:aws:iam::*:role/AWSControlTowerBlueprintAccess" ] }, { "Effect": "Allow", "Action": [ "cloudtrail:DescribeTrails", "ec2:DescribeAvailabilityZones", "iam:ListRoles", "logs:CreateLogGroup", "logs:DescribeLogGroups", "organizations:CreateAccount", "organizations:DescribeAccount", "organizations:DescribeCreateAccountStatus", "organizations:DescribeOrganization", "organizations:DescribeOrganizationalUnit", "organizations:DescribePolicy", "organizations:ListAccounts", "organizations:ListAccountsForParent", "organizations:ListAWSServiceAccessForOrganization", "organizations:ListChildren", "organizations:ListOrganizationalUnitsForParent", "organizations:ListParents", "organizations:ListPoliciesForTarget", "organizations:ListTargetsForPolicy", "organizations:ListRoots", "organizations:MoveAccount", "servicecatalog:AssociatePrincipalWithPortfolio" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:GetRole", "iam:GetUser", "iam:ListAttachedRolePolicies", "iam:GetRolePolicy" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::*:role/service-role/AWSControlTowerStackSetRole", "arn:aws:iam::*:role/service-role/AWSControlTowerCloudTrailRole", "arn:aws:iam::*:role/service-role/AWSControlTowerConfigAggregatorRoleForOrganizations" ] }, { "Effect": "Allow", "Action": [ "config:DeleteConfigurationAggregator", "config:PutConfigurationAggregator", "config:TagResource" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/aws-control-tower": "managed-by-control-tower" } } }, { "Effect": "Allow", "Action": [ "organizations:EnableAWSServiceAccess", "organizations:DisableAWSServiceAccess" ], "Resource": "*", "Condition": { "StringLike": { "organizations:ServicePrincipal": [ "config.amazonaws.com", "cloudtrail.amazonaws.com" ] } } }, { "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "*", "Condition": { "StringEquals": { "iam:AWSServiceName": "cloudtrail.amazonaws.com" } } } ] }

Kebijakan kepercayaan peran:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "controltower.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

Kebijakan inline adalahAWSControlTowerAdminPolicy:

{ "Version": "2012-10-17", "Statement": [ { "Action": "ec2:DescribeAvailabilityZones", "Resource": "*", "Effect": "Allow" } ] }

AWS ControlTowerStackSetRole

AWS CloudFormation mengasumsikan peran ini untuk menerapkan set tumpukan di akun yang dibuat oleh AWS Control Tower. Kebijakan Inline:

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "sts:AssumeRole" ], "Resource": [ "arn:aws:iam::*:role/AWSControlTowerExecution" ], "Effect": "Allow" } ] }

Kebijakan kepercayaan

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "cloudformation.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

AWS ControlTowerCloudTrailRole

AWS Control Tower memungkinkan CloudTrail sebagai praktik terbaik dan menyediakan peran ini CloudTrail. CloudTrailmengasumsikan peran ini untuk membuat dan menerbitkan CloudTrail log. Kebijakan Inline:

{ "Version": "2012-10-17", "Statement": [ { "Action": "logs:CreateLogStream", "Resource": "arn:aws:logs:*:*:log-group:aws-controltower/CloudTrailLogs:*", "Effect": "Allow" }, { "Action": "logs:PutLogEvents", "Resource": "arn:aws:logs:*:*:log-group:aws-controltower/CloudTrailLogs:*", "Effect": "Allow" } ] }

Kebijakan kepercayaan

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

AWSControlTowerBlueprintAccess persyaratan peran

AWS Control Tower mengharuskan Anda untuk membuat AWSControlTowerBlueprintAccess peran di akun hub cetak biru yang ditentukan, dalam organisasi yang sama.

Nama peran

Nama peran harusAWSControlTowerBlueprintAccess.

Kebijakan kepercayaan peran

Peran harus diatur untuk mempercayai prinsip-prinsip berikut:

  • Prinsipal yang menggunakan AWS Control Tower di akun manajemen.

  • AWSControlTowerAdminPeran dalam akun manajemen.

Contoh berikut menunjukkan kebijakan kepercayaan paling tidak memiliki hak istimewa. Saat Anda membuat kebijakan sendiri, ganti istilah YourManagementAccountIddengan ID acccount aktual akun manajemen AWS Control Tower Anda, dan ganti istilah tersebut YourControlTowerUserRoledengan pengenal peran IAM untuk akun manajemen Anda.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::YourManagementAccountId:role/service-role/AWSControlTowerAdmin", "arn:aws:iam::YourManagementAccountId:role/YourControlTowerUserRole" ] }, "Action": "sts:AssumeRole", "Condition": {} } ] }

Izin peran

Anda diminta untuk melampirkan kebijakan yang dikelola AWSServiceCatalogAdminFullAccesske peran tersebut.

AWSServiceRoleForAWSControlTower

Peran ini memberi AWS Control Tower akses ke akun Arsip Log, akun Audit, dan akun anggota, untuk operasi yang penting untuk mempertahankan landing zone, seperti memberi tahu Anda tentang sumber daya yang hanyut.

AWSServiceRoleForAWSControlTowerPeran tersebut membutuhkan kebijakan terkelola terlampir dan kebijakan kepercayaan peran untuk peran IAM.

Kebijakan terkelola untuk peran ini: AWSControlTowerAccountServiceRolePolicy

Kebijakan kepercayaan peran:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "controltower.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

AWSControlTowerAccountServiceRolePolicy

Kebijakan yang AWS dikelola ini memungkinkan AWS Control Tower memanggil AWS layanan yang menyediakan konfigurasi akun otomatis dan tata kelola terpusat atas nama Anda.

Kebijakan ini berisi izin minimum AWS Control Tower untuk menerapkan penerusan AWS Security Hub temuan untuk sumber daya yang dikelola oleh kontrol Security Hub yang merupakan bagian dari Standar yang dikelola Layanan Security Hub: AWS Control Tower, dan mencegah perubahan yang membatasi kemampuan mengelola akun pelanggan. Ini adalah bagian dari proses deteksi AWS Security Hub drift latar belakang yang tidak secara langsung diprakarsai oleh pelanggan.

Kebijakan ini memberikan izin untuk membuat EventBridge aturan Amazon, khususnya untuk kontrol Security Hub, di setiap akun anggota, dan aturan ini harus menentukan EventPattern persisnya. Selain itu, aturan hanya dapat beroperasi berdasarkan aturan yang dikelola oleh prinsipal layanan kami.

Prinsipal layanan: controltower.amazonaws.com

Artefak JSON untuk AWSControlTowerAccountServiceRolePolicy adalah sebagai berikut:

{ "Version": "2012-10-17", "Statement": [ { //For creating the managed rule "Sid": "AllowPutRuleOnSpecificSourcesAndDetailTypes", "Effect": "Allow", "Action": "events:PutRule", "Resource": "arn:aws:events:*:*:rule/*ControlTower*", "Condition": { "ForAnyValue:StringEquals": { "events:source": "aws.securityhub" }, "Null": { "events:detail-type": "false" }, "StringEquals": { "events:ManagedBy": "controltower.amazonaws.com", "events:detail-type": "Security Hub Findings - Imported" } } }, // Other operations to manage the managed rule { "Sid": "AllowOtherOperationsOnRulesManagedByControlTower", "Effect": "Allow", "Action": [ "events:DeleteRule", "events:EnableRule", "events:DisableRule", "events:PutTargets", "events:RemoveTargets" ], "Resource": "arn:aws:events:*:*:rule/*ControlTower*", "Condition": { "StringEquals": { "events:ManagedBy": "controltower.amazonaws.com" } } }, // More managed rule permissions { "Sid": "AllowDescribeOperationsOnRulesManagedByControlTower", "Effect": "Allow", "Action": [ "events:DescribeRule", "events:ListTargetsByRule" ], "Resource": "arn:aws:events:*:*:rule/*ControlTower*" }, // Add permission to publish the security notifications to SNS { "Sid": "AllowControlTowerToPublishSecurityNotifications", "Effect": "Allow", "Action": "sns:publish", "Resource": "arn:aws:sns:*:*:aws-controltower-AggregateSecurityNotifications", "Condition": { "StringEquals": { "aws:PrincipalAccount": "${aws:ResourceAccount}" } } }, // For drift verification { "Sid": "AllowActionsForSecurityHubIntegration", "Effect": "Allow", "Action": [ "securityhub:DescribeStandardsControls", "securityhub:GetEnabledStandards" ], "Resource": "arn:aws:securityhub:*:*:hub/default" } ] }

Pembaruan kebijakan terkelola ini dirangkum dalam tabel,Kebijakan terkelola untuk AWS Control Tower.