Identity and Access Management 和 Amazon CodeCatalyst - Amazon CodeCatalyst

Identity and Access Management 和 Amazon CodeCatalyst

在 Amazon CodeCatalyst 中,您可以创建并使用 AWS 构建者 ID 来登录和访问您的空间和项目。AWS 构建者 ID 不是 AWS Identity and Access Management(IAM)中的身份,也不存在于 AWS 账户中。但是,CodeCatalyst 在验证用于计费目的的空间以及连接到 AWS 账户 以在 AWS 账户中创建和使用资源时会与 IAM 集成。

AWS Identity and Access Management(IAM)是一项 AWS 服务,可以帮助管理员安全地控制对 AWS 资源的访问。IAM 管理员控制可以通过身份验证(登录)和授权(具有权限)使用资源的人员。IAM 是一项无需额外费用即可使用的 AWS 服务。

在 Amazon CodeCatalyst 中创建空间时,您必须连接一个 AWS 账户以作为空间的计费账户。您必须在 AWS 账户中拥有管理员权限才能验证 CodeCatalyst 空间,或拥有该权限。您还可以选择为空间添加一个 IAM 角色,CodeCatalyst 可使用该角色在已连接的 AWS 账户中创建和访问资源。该角色称作服务角色。您可以选择与多个 AWS 账户建立连接,并在每个账户中为 CodeCatalyst 创建服务角色。

注意

CodeCatalyst 的计费是在指定为计费账户的 AWS 账户中进行的。但是,如果您在该 AWS 账户或任何其他连接的 AWS 账户中创建一个 CodeCatalyst 服务角色,则该 CodeCatalyst 服务角色创建和使用的资源将在连接的 AWS 账户中进行计费。有关更多信息,请参阅《Amazon CodeCatalyst Administrator Guide》中的 Managing billing

IAM 中的基于身份的策略

基于身份的策略是可附加到身份的 JSON 权限策略文档。该身份可以是用户、用户组或角色。这些策略控制用户和角色可在何种条件下对哪些资源执行哪些操作。要了解如何创建基于身份的策略,请参阅《IAM 用户指南》中的创建 IAM 策略

通过使用 IAM 基于身份的策略,您可以指定允许或拒绝的操作和资源以及允许或拒绝操作的条件。您无法在基于身份的策略中指定主体,因为它适用于其附加的用户或角色。要了解可在 JSON 策略中使用的所有元素,请参阅《IAM 用户指南》中的 IAM JSON 策略元素引用

适用于 CodeCatalyst 的基于身份的策略示例

要查看 CodeCatalyst 基于身份的策略示例,请参阅适用于 CodeCatalyst 连接的基于身份的策略示例

IAM 中的策略操作

管理员可以使用 AWS JSON 策略来指定谁有权访问什么内容。也就是说,哪个主体可以对什么资源执行操作,以及在什么条件下执行。

JSON 策略的 Action 元素描述可用于在策略中允许或拒绝访问的操作。策略操作通常与关联的 AWS API 操作同名。有一些例外情况,例如没有匹配 API 操作的仅限权限 操作。还有一些操作需要在策略中执行多个操作。这些附加操作称为相关操作

要在单个语句中指定多项操作,请使用逗号将它们隔开。

"Action": [ "prefix:action1", "prefix:action2" ]

IAM 中的策略资源

管理员可以使用 AWS JSON 策略来指定谁有权访问什么内容。也就是说,哪个主体可以对什么资源执行操作,以及在什么条件下执行。

Resource JSON 策略元素指定要向其应用操作的一个或多个对象。语句必须包含 ResourceNotResource 元素。作为最佳实践,请使用其 Amazon 资源名称(ARN)指定资源。对于支持特定资源类型(称为资源级权限)的操作,您可以执行此操作。

对于不支持资源级权限的操作(如列出操作),请使用通配符(*)指示语句应用于所有资源。

"Resource": "*"

IAM 中的策略条件键

管理员可以使用 AWS JSON 策略来指定谁有权访问什么内容。也就是说,哪个主体可以对什么资源执行操作,以及在什么条件下执行。

Condition 元素(或 Condition )中,可以指定语句生效的条件。Condition 元素是可选的。您可以创建使用条件运算符(例如,等于或小于)的条件表达式,以使策略中的条件与请求中的值相匹配。

如果您在一个语句中指定多个 Condition 元素,或在单个 Condition 元素中指定多个键,则 AWS 使用逻辑 AND 运算评估它们。如果您为单个条件键指定多个值,则 AWS 使用逻辑 OR 运算来评估条件。在授予语句的权限之前必须满足所有的条件。

在指定条件时,您也可以使用占位符变量。有关更多信息,请参阅《IAM 用户指南》中的 IAM 策略元素:变量和标签

AWS 支持全局条件键和特定于服务的条件键。要查看所有 AWS 全局条件键,请参阅《IAM 用户指南》中的 AWS 全局条件上下文键

适用于 CodeCatalyst 连接的基于身份的策略示例

在 CodeCatalyst 中,需要 AWS 账户才能管理空间的计费和访问项目工作流中的资源。账户连接用于授权向空间添加 AWS 账户。在已连接的 AWS 账户中使用基于身份的策略。

默认情况下,用户和角色没有创建或修改 CodeCatalyst 资源的权限。他们也无法使用 AWS Management Console、AWS Command Line Interface(AWS CLI)或 AWS API 执行任务。IAM 管理员必须创建 IAM 策略,以便为用户和角色授予权限,以对所需资源执行操作。然后,管理员必须为需要这些策略的用户附加这些策略。

以下 IAM 策略示例授予与账户连接相关的操作的权限。使用这些策略可限制用于将账户连接到 CodeCatalyst 的访问权限。

示例 1:允许用户接受单个 AWS 区域中的连接请求

以下权限策略仅允许用户查看和接受 CodeCatalyst 和 AWS 账户之间的连接请求。此外,该策略使用一个条件以仅允许 us-west-2 区域内的操作,而不允许其他 AWS 区域内的操作。要查看和批准请求,用户需要使用请求中指定的账户登录 AWS Management Console。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codecatalyst:AcceptConnection", "codecatalyst:GetPendingConnection" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestedRegion": "us-west-2" } } } ] }

示例 2:允许在控制台中管理单个 AWS 区域的连接

以下权限策略使用户能够管理单个区域内的 CodeCatalyst 和 AWS 账户之间的连接。该策略使用一个条件以仅允许 us-west-2 区域内的操作,而不允许其他 AWS 区域内的操作。创建连接后,您可以通过选择 AWS Management Console中的选项来创建 CodeCatalystWorkflowDevelopmentRole-spaceName 角色。在示例策略中,iam:PassRole 操作的条件包括 CodeCatalyst 的服务主体。仅具有该访问权限的角色才会在 AWS Management Console中创建。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codecatalyst:*" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestedRegion": "us-west-2" } } }, { "Effect": "Allow", "Action": [ "iam:CreateRole", "iam:CreatePolicy", "iam:AttachRolePolicy", "iam:ListRoles" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "*", "Condition": { "StringEquals": { "iam:PassedToService": [ "codecatalyst.amazonaws.com", "codecatalyst-runner.amazonaws.com" ] } } } ] }

示例 3:禁止管理连接

以下权限策略禁止用户管理 CodeCatalyst 和 AWS 账户之间的连接。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "codecatalyst:*" ], "Resource": "*" } ] }

CodeCatalyst 权限参考

此部分提供了操作的权限参考,这些操作用于已连接到 CodeCatalyst 的 AWS 账户的账户连接资源。以下部分描述了与连接账户相关的仅限授权执行的操作。

所需的账户连接权限

需要以下权限才能使用账户连接。

CodeCatalyst 的账户连接权限 所需的权限 资源
AcceptConnection 需要此权限才能接受将此账户连接到 CodeCatalyst 空间的请求。这只是一种 IAM 策略权限,不是 API 操作。

仅支持在策略的 Resource 元素中使用通配符(*)。

AssociateIamRoleToConnection 需要此权限才能将 IAM 角色与账户连接关联。这只是一种 IAM 策略权限,不是 API 操作。 arn:aws:codecatalyst:region:account_ID:/connections/connection_ID
DeleteConnection 需要此权限才能删除账户连接。这只是一种 IAM 策略权限,不是 API 操作。 arn:aws:codecatalyst:region:account_ID:/connections/connection_ID
DisassociateIamRoleFromConnection 需要此权限才能解除 IAM 角色与账户连接的关联。这只是一种 IAM 策略权限,不是 API 操作。 arn:aws:codecatalyst:region:account_ID:/connections/connection_ID
GetBillingAuthorization 需要此权限才能描述账户连接的计费授权。这只是一种 IAM 策略权限,不是 API 操作。 arn:aws:codecatalyst:region:account_ID:/connections/connection_ID
GetConnection 需要此权限才能获取账户连接。这只是一种 IAM 策略权限,不是 API 操作。 arn:aws:codecatalyst:region:account_ID:/connections/connection_ID
GetPendingConnection 需要此权限才能获取将此账户连接到 CodeCatalyst 空间的待处理请求。这只是一种 IAM 策略权限,不是 API 操作。

仅支持在策略的 Resource 元素中使用通配符(*)。

ListConnections 需要此权限才能列出未处于待处理状态的账户连接。这只是一种 IAM 策略权限,不是 API 操作。

仅支持在策略的 Resource 元素中使用通配符(*)。

ListIamRolesForConnection 需要此权限才能列出与账户连接关联的 IAM 角色。这只是一种 IAM 策略权限,不是 API 操作。 arn:aws:codecatalyst:region:account_ID:/connections/connection_ID
ListTagsForResource 需要此权限才能列出与账户连接关联的标签。这只是一种 IAM 策略权限,不是 API 操作。 arn:aws:codecatalyst:region:account_ID:/connections/connection_ID
PutBillingAuthorization 需要此权限才能创建或更新账户连接的计费授权。这只是一种 IAM 策略权限,不是 API 操作。 arn:aws:codecatalyst:region:account_ID:/connections/connection_ID
RejectConnection 需要此权限才能拒绝将此账户连接到 CodeCatalyst 空间的请求。这只是一种 IAM 策略权限,不是 API 操作。

仅支持在策略的 Resource 元素中使用通配符(*)。

TagResource 需要此权限才能创建或编辑与账户连接关联的标签。这只是一种 IAM 策略权限,不是 API 操作。 arn:aws:codecatalyst:region:account_ID:/connections/connection_ID
UntagResource 需要此权限才能移除与账户连接关联的标签。这只是一种 IAM 策略权限,不是 API 操作。 arn:aws:codecatalyst:region:account_ID:/connections/connection_ID

所需的 IAM Identity Center 应用程序权限

需要以下权限才能使用 IAM Identity Center 应用程序。

CodeCatalyst 的 IAM Identity Center 应用程序权限 所需的权限 资源
AssociateIdentityCenterApplicationToSpace 需要此权限才能将 IAM Identity Center 应用程序与 CodeCatalyst 空间关联。这只是一种 IAM 策略权限,不是 API 操作。 arn:aws:codecatalyst:region:account_ID:/identity-center-applications/identity-center-application_ID
AssociateIdentityToIdentityCenterApplication 需要此权限才能将一个身份与 CodeCatalyst 空间的一个 IAM Identity Center 应用程序关联。这只是一种 IAM 策略权限,不是 API 操作。 arn:aws:codecatalyst:region:account_ID:/identity-center-applications/identity-center-application_ID
BatchAssociateIdentitiesToIdentityCenterApplication 需要此权限才能将多个身份与 CodeCatalyst 空间的一个 IAM Identity Center 应用程序关联。这只是一种 IAM 策略权限,不是 API 操作。 arn:aws:codecatalyst:region:account_ID:/identity-center-applications/identity-center-application_ID
BatchDisassociateIdentitiesFromIdentityCenterApplication 需要此权限才能解除多个身份与 CodeCatalyst 空间的一个 IAM Identity Center 应用程序的关联。这只是一种 IAM 策略权限,不是 API 操作。 arn:aws:codecatalyst:region:account_ID:/identity-center-applications/identity-center-application_ID
CreateIdentityCenterApplication 需要此权限才能创建 IAM Identity Center 应用程序。这只是一种 IAM 策略权限,不是 API 操作。 arn:aws:codecatalyst:region:account_ID:/identity-center-applications/identity-center-application_ID
CreateSpaceAdminRoleAssignment 需要此权限才能为给定的 CodeCatalyst 空间和 IAM Identity Center 应用程序创建管理员角色分配。这只是一种 IAM 策略权限,不是 API 操作。 arn:aws:codecatalyst:region:account_ID:/identity-center-applications/identity-center-application_ID
DeleteIdentityCenterApplication 需要此权限才能删除 IAM Identity Center 应用程序。这只是一种 IAM 策略权限,不是 API 操作。 arn:aws:codecatalyst:region:account_ID:/identity-center-applications/identity-center-application_ID
DisassociateIdentityCenterApplicationFromSpace 需要此权限才能解除 IAM Identity Center 应用程序与 CodeCatalyst 空间的关联。这只是一种 IAM 策略权限,不是 API 操作。 arn:aws:codecatalyst:region:account_ID:/identity-center-applications/identity-center-application_ID
DisassociateIdentityFromIdentityCenterApplication 需要此权限才能解除身份与 CodeCatalyst 空间的 IAM Identity Center 应用程序的关联。这只是一种 IAM 策略权限,不是 API 操作。 arn:aws:codecatalyst:region:account_ID:/identity-center-applications/identity-center-application_ID
GetIdentityCenterApplication 需要此权限才能获取有关 IAM Identity Center 应用程序的信息。这只是一种 IAM 策略权限,不是 API 操作。 arn:aws:codecatalyst:region:account_ID:/identity-center-applications/identity-center-application_ID
ListIdentityCenterApplications 需要此权限才能查看账户中所有 IAM Identity Center 应用程序的列表。这只是一种 IAM 策略权限,不是 API 操作。

仅支持在策略的 Resource 元素中使用通配符(*)。

ListIdentityCenterApplicationsForSpace 需要此权限才能按 CodeCatalyst 空间查看 IAM Identity Center 应用程序的列表。这只是一种 IAM 策略权限,不是 API 操作。 arn:aws:codecatalyst:region:account_ID:/identity-center-applications/identity-center-application_ID
ListSpacesForIdentityCenterApplication 需要此权限才能按 IAM Identity Center 应用程序查看 CodeCatalyst 空间的列表。这只是一种 IAM 策略权限,不是 API 操作。 arn:aws:codecatalyst:region:account_ID:/identity-center-applications/identity-center-application_ID
SynchronizeIdentityCenterApplication 需要此权限才能将 IAM Identity Center 应用程序与备用身份存储同步。这只是一种 IAM 策略权限,不是 API 操作。 arn:aws:codecatalyst:region:account_ID:/identity-center-applications/identity-center-application_ID
UpdateIdentityCenterApplication 需要此权限才能更新 IAM Identity Center 应用程序。这只是一种 IAM 策略权限,不是 API 操作。 arn:aws:codecatalyst:region:account_ID:/identity-center-applications/identity-center-application_ID