本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
步骤 5:创建启动角色
在此步骤中,您将创建一个 IAM 角色(启动角色),指定 Terraform 配置引擎在最终用户启动 Terra HashiCorp form 产品时AWS Service Catalog可以承担的权限。
您稍后分配给简单 Amazon S3 桶 Terraform 产品作为启动约束的 IAM 角色(启动角色)必须具有以下权限:
-
您的 Terraform 产品基础 AWS 资源的访问权限。在本教程中,这包括对
s3:CreateBucket*
、s3:DeleteBucket*
、s3:Get*
、s3:List*
和s3:PutBucketTagging
Amazon S3 操作的访问权限。 -
自 AWS Service Catalog 拥有的 Amazon S3 存储桶中读取 Amazon S3 模板的访问权限
-
对
CreateGroup
、ListGroupResources
、DeleteGroup
和Tag
资源组操作的访问权限。借助这些操作,AWS Service Catalog 能够管理资源组和标签
要在 AWS Service Catalog 管理员账户中创建启动角色
-
登录 AWS Service Catalog 管理员账户后,遵照 IAM 用户指南中在 JSON 选项卡上创建新策略的说明进行操作。
-
为您的简单 Amazon S3 存储桶 Terraform 产品创建策略。此策略必须在创建启动角色之前创建,并且包含以下权限:
-
s3
— 允许 AWS Service Catalog 列出、读取、写入、预配置和标记 Amazon S3 产品的完全权限。 -
s3
— 允许对 AWS Service Catalog 拥有的 Amazon S3 存储桶的访问权限。要部署产品,AWS Service Catalog 需要预配置构件的访问权限。 -
resourcegroups
— 允许 AWS Service Catalog 创建、列出、删除和标记 AWS Resource Groups。 -
tag
— 允许 AWS Service Catalog 的标记权限。
注意
根据您要部署的基础资源,您可能需要修改示例 JSON 策略。
在 JSON 策略文档中,粘贴以下内容:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "s3:GetObject", "Resource": "*", "Condition": { "StringEquals": { "s3:ExistingObjectTag/servicecatalog:provisioning": "true" } } }, { "Action": [ "s3:CreateBucket*", "s3:DeleteBucket*", "s3:Get*", "s3:List*", "s3:PutBucketTagging" ], "Resource": "arn:aws:s3:::*", "Effect": "Allow" }, { "Action": [ "resource-groups:CreateGroup", "resource-groups:ListGroupResources", "resource-groups:DeleteGroup", "resource-groups:Tag" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "tag:GetResources", "tag:GetTagKeys", "tag:GetTagValues", "tag:TagResources", "tag:UntagResources" ], "Resource": "*", "Effect": "Allow" } ] }
-
-
-
请选择下一步,标签。
-
选择下一步,审核。
-
在查看策略页面上,输入
S3ResourceCreationAndArtifactAccessPolicy
作为名称。 -
选择创建策略。
-
-
在导航窗格中,选择角色,然后选择创建角色。
-
对于选择可信实体,选择自定义信任策略,然后输入以下 JSON 策略:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "GivePermissionsToServiceCatalog", "Effect": "Allow", "Principal": { "Service": "servicecatalog.amazonaws.com" }, "Action": "sts:AssumeRole" }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account_id:root" }, "Action": "sts:AssumeRole", "Condition": { "StringLike": { "aws:PrincipalArn": [ "arn:aws:iam::accounti_id:role/TerraformEngine/TerraformExecutionRole*", "arn:aws:iam::accounti_id:role/TerraformEngine/ServiceCatalogExternalParameterParserRole*", "arn:aws:iam::accounti_id:role/TerraformEngine/ServiceCatalogTerraformOSParameterParserRole*" ] } } } ] }
-
选择下一步。
-
在策略列表中,选择您刚才创建的
S3ResourceCreationAndArtifactAccessPolicy
。 -
选择下一步。
-
对于 Role name(角色名称),输入
SCLaunch-S3product
。重要
启动角色名称必须以 “SCLaunch” 开头,后跟所需的角色名称。
-
选择创建角色。
重要
在 AWS Service Catalog 管理员账户中创建启动角色后,您还必须在 AWS Service Catalog 最终用户账户中创建相同的启动角色。最终用户账户中的角色必须与管理员账户中的角色同名并包含相同的策略。
要在 AWS Service Catalog 最终用户账户中创建启动角色
-
以管理员身份登录最终用户账户,遵照 IAM 用户指南中在 JSON 选项卡上创建新策略的说明进行操作。
-
重复上述要在 AWS Service Catalog 管理员账户中创建启动角色中的步骤 2-10。
注意
在 AWS Service Catalog 最终用户账户中创建启动角色时,请确保在自定义信任策略中使用相同的管理员 AccountId
。
现在您已经在管理员账户和最终用户账户中创建了启动角色,可以向产品添加启动约束了。