IBM Cloud Docs
使用基于上下文的限制保护 IAM 服务

使用基于上下文的限制保护 IAM 服务

基于上下文的限制使帐户所有者和管理员能够根据访问请求的上下文来定义和实施 IBM Cloud® 资源的访问限制。 可以使用基于上下文的限制以及身份和访问管理 (IAM) 策略来控制对 IAM 资源的访问。 由于 IAM 访问权和基于上下文的限制都强制实施访问权,因此基于上下文的限制提供了保护,即使在凭证受损或管理不当的情况下也是如此。 有关更多信息,请参阅 什么是基于上下文的限制

这些限制适用于基于身份的传统 IAM 策略,以提供另一层保护。 与 IAM 策略不同,基于上下文的限制不会分配访问权。 基于上下文的限制检查访问请求是否来自您配置的允许上下文。

用户必须对要以创建,更新或删除规则为目标的特定 IAM 服务具有管理员角色。 用户还必须至少对基于上下文的限制服务具有“查看者”角色,才能查看网络区域并将其添加到规则。 “基于上下文的限制”服务上的“编辑者”或“管理员”角色授予用户创建,更新或删除网络区域的访问权。

任何 IBM Cloud Activity Tracker 或生成的审计日志事件都来自基于上下文的限制服务,而不是 IAM 服务。 有关更多信息,请参阅 监视基于上下文的限制

要开始使用基于上下文的限制来保护 IAM 资源,请参阅 利用基于上下文的限制来保护资源 教程。

IAM 如何与基于上下文的限制集成

要保护特定 IAM 服务或所有 IAM 帐户管理服务的组,请完成以下步骤:

  1. 在 IBM Cloud 控制台中,单击 管理> 基于上下文的限制,然后选择 规则
  2. 单击创建
  3. 选择单个 IAM 服务或所有 IAM 帐户管理服务的分组。
  4. 然后,单击下一步
  5. 要保护整个服务或服务组,请将限制范围限定为 所有资源
  6. 要仅保护一组特定操作,请将限制范围限定为 特定资源
    1. 选择属性并选择或输入值。 要了解有关限制一组特定操作的更多信息,请查看步骤 3 中目标服务的部分。
  7. 单击 复审 > 继续
  8. 添加一个或多个上下文。 选择端点类型和网络区域,然后单击 添加。 有关更多信息,请参阅 创建规则
  9. 单击继续
  10. 请提供唯一描述。
  11. 选择您希望如何执行规则。 您可以在创建规则时决定要如何强制实施规则,并随时更新规则强制实施。 有关更多信息,请参阅 规则实施

假设您创建了以 IAM 访问组服务为目标的规则。 要完成任何 IAM 访问组服务操作,必须为用户分配具有 IAM 访问策略的正确角色,并且他们必须满足基于上下文的限制规则。 例如,对 IAM 访问组服务具有“查看者”角色的用户可以完成操作 iam-groups.members.read (如果他们从正确的网络区域发送请求并满足规则)。 如果具有“查看者”角色的同一用户尝试将成员添加到组 (iam-groups.members.add),那么即使他们满足规则,也无法完成该请求,因为他们不是编辑者或管理员。

要查看与服务关联的操作,请转至 IBM Cloud® 控制台中的“角色”页面。

IAM 如何与基于上下文的限制集成

要保护特定 IAM 服务或所有 IAM 帐户管理服务的组,请使用以下属性来构建规则:

标识服务的属性名称值对
服务 名称
IAM 访问组服务 serviceName iam-groups
IAM 访问管理服务 serviceName iam-access-management
IAM 身份服务 serviceName iam-identity
User Management Service serviceName user-management
所有 IAM 帐户管理服务 service_group_id IAM

要保护与服务关联的所有操作,请创建规则,而不将其作用域限定为特定资源或 API。 有关更多信息,请参阅 创建规则。 要仅保护一组特定操作,请查看表 1 中链接的以下部分。

保护 IAM 访问组服务

IAM 访问组服务包含创建,编辑和删除访问组的功能。 这些功能扩展为从组中添加或除去用户,分配对组的访问权以及管理其他用户使用访问组的访问权。 您可以保护整个服务,包括与该服务关联的所有操作。

限制管理特定访问组的能力

您可以通过将规则的作用域限定为 Resource ID 属性来保护管理特定访问组的能力。 创建作用域限定为 Resource ID 属性的规则将保护与该特定访问组的服务相关联的所有操作。

要配置此规则,请以 IAM 访问组服务为目标,将此规则的作用域限定为 特定资源,然后选择 Resource ID 属性。 然后,输入要保护的访问组的标识。 有关设置规则的步骤的更多信息,请参阅 IAM 如何与基于上下文的限制集成

要查找访问组标识,请转至 管理> 访问权 (IAM)> 访问组。 单击要在规则中保护的访问组。 然后,单击 详细信息。 需要的值以 AccessGroupId 开头。

限制使用 API 管理特定访问组的能力

您可以通过将规则的作用域限定为 resource 属性来保护管理特定访问组的能力。 创建作用域限定为 resource 属性的规则将保护与该特定访问组的服务相关联的所有操作。

以下示例显示了 JSON 格式的规则,用于保护特定访问组:

{
	"resources": [
		{
			"attributes": [
				{
					"name": "accountId",
					"value": "alphanumericAccoutnID"
				},
				{
					"name": "serviceName",
					"value": "iam-groups"
				},
				{
					"name": "resource",
					"value": "AccessGroupId1234",
					"operator": "stringEquals"
				}
			]
		}
	],
	"description": "",
	"contexts": [],
	"enforcement_mode": "enabled"
}

要查找访问组标识,请使用 列出访问组 方法。

保护 IAM 访问权管理服务

IAM 访问管理服务包含管理定制角色,分配访问策略和管理 IAM 设置等功能。 您可以保护整个服务,或者根据请求的上下文来限制一组特定的操作。

限制在控制台中管理定制角色的能力

您可以通过将规则限定为 Role Management 资源类型来保护管理定制角色的能力。 创建作用域限定为 Role Management 资源类型的规则将保护以下操作:

  • iam-access-management.customRole.create
  • iam-access-management.customRole.update
  • iam-access-management.customRole.delete
  • iam-access-management.customRole.read

要配置此规则,请以 IAM 访问权管理服务为目标,将限制范围限定为 特定资源 > 资源类型,然后选择 角色管理。 有关设置规则的步骤的更多信息,请参阅 IAM 如何与基于上下文的限制集成

要完成任何“角色管理”操作,必须为用户分配具有 IAM 访问策略的正确角色,并且他们必须满足基于上下文的限制规则。 例如,在 IAM Access Management 服务上具有“查看者”角色的用户可以完成操作 iam-access-management.customRole.read (如果他们从正确的网络区域发送请求并满足规则)。 如果同一用户尝试创建定制角色,那么即使他们满足规则,也无法完成该请求,因为他们不是管理员。

限制在控制台中管理策略的能力

您可以通过将规则的作用域限定为 Policy Management 资源类型来保护管理 IAM 策略的能力。 创建作用域限定为 Policy Management 资源类型的规则将保护以下操作:

  • iam.delegationPolicy.create
  • iam.delegationPolicy.update
  • iam.policy.read
  • iam.policy.create
  • iam.policy.update
  • iam.policy.delete

要配置此规则,请以 IAM 访问管理服务为目标,将限制范围限定为 特定资源 > 资源类型,然后选择 策略管理。 有关更多信息,请参阅 创建规则

要完成任何策略管理操作,必须为用户分配具有 IAM 访问策略的服务角色,并且他们必须满足基于上下文的限制规则。 例如,在 IAM Access Management 服务上具有“查看者”角色的用户可以完成操作 iam.policy.read (如果他们从正确的网络区域发送请求并满足规则)。 如果同一用户尝试创建策略,那么即使他们满足规则,也无法完成该请求,因为他们不是管理员。

限制在控制台中查看洞察的能力

您可以通过将规则限定为 insights 资源类型来保护查看洞察 (例如 "不活动身份" 和 "不活动策略" 报告) 的能力。 创建作用域限定为 insights 资源类型的规则将保护以下操作:

  • iam-access-management.insight.get

要配置此规则,请以 IAM 访问管理服务为目标,将限制范围限定为 特定资源 > 资源类型,然后选择 AM Insights。 有关更多信息,请参阅 创建规则

要完成任何设置操作,必须为用户分配具有 IAM 访问策略的正确角色,并且他们必须满足基于上下文的限制规则。 例如,具有 IAM 访问权管理服务的“编辑者”角色的用户可以完成操作 iam-access-management.insight.get (如果他们从正确的网络区域发送请求并满足规则)。 具有“查看者”角色的用户即使满足规则也无法完成该请求,因为他们不是“编辑者”或“管理员”。

通过使用 API 来限制管理定制角色的能力

您可以通过将规则限定为 customRole 资源类型来保护管理定制角色的能力。 创建作用域限定为 customRole 资源类型的规则将保护以下操作:

  • iam-access-management.customRole.create
  • iam-access-management.customRole.update
  • iam-access-management.customRole.delete
  • iam-access-management.customRole.read

以下示例显示了 JSON 格式的规则,用于保护定制角色操作:

{
	"resources": [
		{
			"attributes": [
				{
					"name": "accountId",
					"value": "alphanumericAccoutnID"
				},
				{
					"name": "serviceName",
					"value": "iam-access-management"
				},
				{
					"name": "resourceType",
					"value": "customRole"
				}
			]
		}
	],
	"description": "",
	"contexts": [],
	"enforcement_mode": "enabled"
}

要完成任何角色管理操作,必须为用户分配具有 IAM 访问策略的正确角色,并且他们必须满足基于上下文的限制规则。 例如,在 IAM Access Management 服务上具有“查看者”角色的用户可以完成操作 iam-access-management.customRole.read (如果他们从正确的网络区域发送请求并满足规则)。 如果同一用户尝试创建定制角色,那么即使他们满足规则,也无法完成该请求,因为他们不是管理员。

通过使用 API 来限制管理策略的能力

您可以通过将规则的作用域限定为 policy 资源类型来保护管理 IAM 策略的能力。 创建作用域限定为 Policy Management 资源类型的规则将保护以下操作:

  • iam.delegationPolicy.create
  • iam.delegationPolicy.update
  • iam.policy.read
  • iam.policy.create
  • iam.policy.update
  • iam.policy.delete
  • iam.service.read
  • iam.role.read
  • iam.role.assign

以下示例显示了 JSON 格式的规则,用于保护策略操作:

{
	"resources": [
		{
			"attributes": [
				{
					"name": "accountId",
					"value": "alphanumericAccoutnID"
				},
				{
					"name": "serviceName",
					"value": "iam-access-management"
				},
				{
					"name": "resourceType",
					"value": "policy"
				}
			]
		}
	],
	"description": "",
	"contexts": [],
	"enforcement_mode": "enabled"
}

限制使用 API 查看洞察的能力

您可以通过将规则限定为 insights 资源类型来保护查看洞察 (例如 "不活动身份" 和 "不活动策略" 报告) 的能力。 创建作用域限定为 insights 资源类型的规则将保护以下操作:

  • iam-access-management.insight.get

以下示例显示了 JSON 格式的规则,用于保护策略操作:

{
	"resources": [
		{
			"attributes": [
				{
					"name": "accountId",
					"value": "8293c49bc2724a07999910b1da94c4d6"
				},
				{
					"name": "serviceName",
					"value": "iam-access-management"
				},
				{
					"name": "resourceType",
					"value": "insight"
				}
			]
		}
	],
	"description": "",
	"contexts": [],
	"enforcement_mode": "enabled"
}

要完成任何设置操作,必须为用户分配具有 IAM 访问策略的正确角色,并且他们必须满足基于上下文的限制规则。 例如,具有 IAM 访问权管理服务的“编辑者”角色的用户可以完成操作 iam-access-management.insight.get (如果他们从正确的网络区域发送请求并满足规则)。 具有“查看者”角色的用户即使满足规则也无法完成该请求,因为他们不是“编辑者”或“管理员”。

保护 IAM 身份服务

IAM 身份服务包含查看,更新和删除服务标识,API 密钥,身份提供者 (IdPs) 和可信概要文件的功能。 您还可以分配对服务标识和可信概要文件的访问权。 所有用户都可以创建服务标识,因此服务操作将应用于其他用户创建的帐户中的服务标识,API 密钥和 IdPs。

您可以保护整个服务,或者根据请求的上下文来限制一组特定的操作。 要仅保护一组特定操作,请查看以下部分。

IAM 令牌 API 不受基于上下文的限制。 不会在令牌 API 上实施任何以 IAM 身份服务为目标的规则。 令牌 API 使用不同的机制为登录到帐户的用户设置 IP 地址限制,在此期间用户将获取令牌。 有关更多信息,请参阅 允许帐户的特定 IP 地址

限制在控制台中管理服务标识及其 API 密钥的能力

您可以通过将规则限定为 serviceid 资源类型来保护管理服务标识及其 API 密钥的能力。 创建作用域限定为 serviceid 资源类型的规则将保护以下操作:

  • iam-identity.serviceid.get
  • iam-identity.serviceid.update
  • iam-identity.serviceid.delete
  • iam-identity.apikey.manage
  • iam-identity.apikey.get
  • iam-identity.apikey.list
  • iam-identity.apikey.create
  • iam-identity.apikey.update
  • iam-identity.apikey.delete

要配置此规则,请以 IAM 身份服务为目标,将此规则的作用域限定为 特定资源,然后选择 Resource type 属性。 然后,输入值 serviceid。 有关设置规则的步骤的更多信息,请参阅 IAM 如何与基于上下文的限制集成

通过使用 API 来限制管理服务标识及其 API 密钥的能力

您可以通过将规则限定为 serviceid 资源类型来保护管理服务标识及其 API 密钥的能力。 创建作用域限定为 serviceid 资源类型的规则将保护以下操作:

  • iam-identity.serviceid.get
  • iam-identity.serviceid.update
  • iam-identity.serviceid.delete
  • iam-identity.apikey.manage
  • iam-identity.apikey.get
  • iam-identity.apikey.list
  • iam-identity.apikey.create
  • iam-identity.apikey.update
  • iam-identity.apikey.delete

以下示例显示用于保护 serviceid 资源类型操作的 JSON 格式规则:

{
	"resources": [
		{
			"attributes": [
				{
					"name": "accountId",
					"value": "alphanumericAccoutnID"
				},
				{
					"name": "serviceName",
					"value": "iam-identity"
				},
				{
					"name": "resourceType",
					"value": "serviceid"
				}
			]
		}
	],
	"description": "",
	"contexts": [],
	"enforcement_mode": "enabled"
}

限制在控制台中管理用户 API 密钥的能力

您可以通过将规则限定为 apikey 资源类型来保护管理用户 API 密钥的能力。 创建作用域限定为 apikey 资源类型的规则将保护以下操作:

  • iam-identity.apikey.manage
  • iam-identity.apikey.get
  • iam-identity.apikey.list
  • iam-identity.apikey.create
  • iam-identity.apikey.update
  • iam-identity.apikey.delete

要配置此规则,请以 IAM 身份服务为目标,将此规则的作用域限定为 特定资源,然后选择 Resource type 属性。 然后,输入值 apikey。 有关设置规则的步骤的更多信息,请参阅 IAM 如何与基于上下文的限制集成

限制使用 API 管理用户 API 密钥的能力

您可以通过将规则限定为 apikey 资源类型来保护管理用户 API 密钥的能力。 创建作用域限定为 apikey 资源类型的规则将保护以下操作:

  • iam-identity.apikey.manage
  • iam-identity.apikey.get
  • iam-identity.apikey.list
  • iam-identity.apikey.create
  • iam-identity.apikey.update
  • iam-identity.apikey.delete

以下示例显示用于保护 apikey 资源类型操作的 JSON 格式规则:

{
	"resources": [
		{
			"attributes": [
				{
					"name": "accountId",
					"value": "alphanumericAccoutnID"
				},
				{
					"name": "serviceName",
					"value": "iam-identity"
				},
				{
					"name": "resourceType",
					"value": "apikey"
				}
			]
		}
	],
	"description": "",
	"contexts": [],
	"enforcement_mode": "enabled"
}

限制在控制台中管理可信概要文件的能力

您可以通过将规则限定为 profile 资源类型来保护管理可信概要文件的能力。 创建作用域限定为 profile 资源类型的规则将保护以下操作:

  • iam-identity.profile.create
  • iam-identity.profile.update
  • iam-identity.profile.delete
  • iam-identity.profile.get
  • iam-identity.profile.get_session
  • iam-identity.profile.revoke_session
  • iam-identity.profile.linkToResource

要配置此规则,请以 IAM 身份服务为目标,将此规则的作用域限定为 特定资源,然后选择 Resource type 属性。 然后,输入值 profile。 有关设置规则的步骤的更多信息,请参阅 IAM 如何与基于上下文的限制集成

通过使用 API 来限制管理可信概要文件的能力

您可以通过将规则限定为 profile 资源类型来保护管理可信概要文件的能力。 创建作用域限定为 profile 资源类型的规则将保护以下操作:

  • iam-identity.profile.create
  • iam-identity.profile.update
  • iam-identity.profile.delete
  • iam-identity.profile.get
  • iam-identity.profile.get_session
  • iam-identity.profile.revoke_session
  • iam-identity.profile.linkToResource

以下示例显示用于保护 profile 资源类型操作的 JSON 格式规则:

{
	"resources": [
		{
			"attributes": [
				{
					"name": "accountId",
					"value": "alphanumericAccoutnID"
				},
				{
					"name": "serviceName",
					"value": "iam-identity"
				},
				{
					"name": "resourceType",
					"value": "profile"
				}
			]
		}
	],
	"description": "",
	"contexts": [],
	"enforcement_mode": "enabled"
}

限制在控制台中管理帐户设置的能力

您可以通过将规则限定为 settings 资源类型来保护管理帐户设置的能力。 创建作用域限定为 settings 资源类型的规则将保护以下操作:

  • iam-identity.account.get
  • iam-identity.account.create
  • iam-identity.account.update
  • iam-identity.account.create
  • iam-identity.account.update
  • iam-identity.account.enable_idp
  • iam-identity.account.disable_idp
  • iam-identity.account.delete
  • iam-identity.session.manage

要配置此规则,请以 IAM 身份服务为目标,将此规则的作用域限定为 特定资源,然后选择 Resource type 属性。 然后,输入值 settings。 有关设置规则的步骤的更多信息,请参阅 IAM 如何与基于上下文的限制集成

通过使用 API 来限制管理帐户设置的能力

您可以通过将规则限定为 settings 资源类型来保护管理帐户设置的能力。 创建作用域限定为 settings 资源类型的规则将保护以下操作:

  • iam-identity.account.get
  • iam-identity.account.create
  • iam-identity.account.update
  • iam-identity.account.create
  • iam-identity.account.update
  • iam-identity.account.enable_idp
  • iam-identity.account.disable_idp
  • iam-identity.account.delete
  • iam-identity.session.manage

以下示例显示用于保护 settings 资源类型操作的 JSON 格式规则:

{
	"resources": [
		{
			"attributes": [
				{
					"name": "accountId",
					"value": "alphanumericAccoutnID"
				},
				{
					"name": "serviceName",
					"value": "iam-identity"
				},
				{
					"name": "resourceType",
					"value": "settings"
				}
			]
		}
	],
	"description": "",
	"contexts": [],
	"enforcement_mode": "enabled"
}

限制在控制台中管理身份提供者的能力

您可以通过将规则的作用域限定为 idp 资源类型来保护管理身份提供者 (IdPs) 的能力。 创建作用域限定为 ipd 资源类型的规则将保护以下操作:

  • iam-identity.idp.get
  • iam-identity.idp.list
  • iam-identity.idp.create
  • iam-identity.idp.update
  • iam-identity.idp.delete
  • iam-identity.idp.test
  • iam-identity.idp.metadata

要配置此规则,请以 IAM 身份服务为目标,将此规则的作用域限定为 特定资源,然后选择 Resource type 属性。 然后,输入值 idp。 有关设置规则的步骤的更多信息,请参阅 IAM 如何与基于上下文的限制集成

限制使用 API 管理身份提供者的能力

您可以通过将规则的作用域限定为 idp 资源类型来保护管理身份提供者 (IdPs) 的能力。 创建作用域限定为 idp 资源类型的规则将保护以下操作:

  • iam-identity.idp.get
  • iam-identity.idp.list
  • iam-identity.idp.create
  • iam-identity.idp.update
  • iam-identity.idp.delete
  • iam-identity.idp.test
  • iam-identity.idp.metadata

以下示例显示用于保护 idp 资源类型操作的 JSON 格式规则:

{
	"resources": [
		{
			"attributes": [
				{
					"name": "accountId",
					"value": "alphanumericAccoutnID"
				},
				{
					"name": "serviceName",
					"value": "iam-identity"
				},
				{
					"name": "resourceType",
					"value": "idp"
				}
			]
		}
	],
	"description": "",
	"contexts": [],
	"enforcement_mode": "enabled"
}

保护用户管理服务

用户管理服务包含查看帐户中的用户,邀请和除去用户以及查看和更新用户概要文件设置的功能。 您可以创建用于保护与此服务关联的所有操作的规则。

用户管理服务中的查看者角色通常分配给被指定查看或管理支持案例的用户。 如果帐户所有者在 IAM 设置中限制用户列表的可视性,那么用户无法看到帐户中其他用户打开的支持案例。 但是,如果他们被分配了用户管理服务的查看者角色,则用户列表可见性设置不会影响查看账户中的案例。

要配置此规则,请以 用户管理服务为目标。 有关在控制台中设置规则的步骤的更多信息,请参阅 IAM 如何与基于上下文的限制集成

以下示例显示了 JSON 格式的规则,用于保护所有 user-management 操作:

{
{
	"resources": [
		{
			"attributes": [
				{
					"name": "accountId",
					"value": "alphanumericAccoutnID"
				},
				{
					"name": "serviceName",
					"value": "user-management"
				}
			]
		}
	],
	"description": "",
	"contexts": [],
	"enforcement_mode": "enabled"
}
}

保护所有IAM账户管理服务

所有 IAM 帐户管理服务 是帐户管理服务子集的分组,其中包括 IAM 身份,IAM 访问管理,IAM 用户管理和 IAM 组。 您可以创建用于保护与这些服务关联的所有操作的规则。

要配置此规则,请以 所有 IAM 帐户管理服务为目标。 有关在控制台中设置规则的步骤的更多信息,请参阅 IAM 如何与基于上下文的限制集成

以下示例显示了 JSON 格式的规则,用于保护与 IAM 服务分组相关联的所有操作:

{
{
	"resources": [
		{
			"attributes": [
				{
					"name": "accountId",
					"value": "alphanumericAccoutnID"
				},
				{
					"name": "service_group_id",
					"value": "IAM"
				}
			]
		}
	],
	"description": "",
	"contexts": [],
	"enforcement_mode": "enabled"
}
}