为访问组创建动态规则
您可以创建动态规则,以根据特定身份属性自动将联合用户添加到访问组。 当用户使用联合 ID 登录时,身份提供商 ( IdP ) 的数据会根据用户设置的规则将用户动态映射到访问组。
用户已经在您公司的域中拥有特定的身份信息,并且他们使用联合标识登录时,可以使用 SAML 断言来传递此数据。 在 IdP 中配置的 SAML 断言或属性语句提供了用于创建每条规则的数据。 例如,您可能有将用户定义为管理者的 true 或 false 属性语句。 此信息可用于将作为管理者的所有用户添加到 IBM Cloud® 帐户中已创建的特定管理者访问组。 有关更多信息,请参阅如何 控制云资源访问的教程和 示例规则。
只有已受邀加入帐户的用户才能使用动态规则映射到访问组。
使用控制台设置规则
动态规则是通过设置条件创建的,这些条件必须与 IdP 中配置的数据相匹配,并在登录时与用户的联合 ID 一起传入。 可以为一个规则添加多个条件。 必须满足规则中设置的所有条件才能将用户添加到访问组。
要创建规则,请执行以下步骤:
- 在 IBM Cloud 控制台中,单击管理 > 访问 (IAM),然后选择访问组。
- 选择要创建规则的访问组名称。 此操作将打开组详细信息页面。
- 选择动态规则。
- 单击添加规则。
- 输入 IdP 中的信息,这些信息将在“添加规则”页面上动态提供。 以下列表提供了各个必填字段的详细信息。
可以把访问组规则看成是键值对。 键是您在 Add users when 字段中添加的内容,值是您在 Values 字段中输入的内容。
有关用于创建动态规则的字段的更多信息,请参阅 IAM 条件属性。
使用 Terraform 设置规则
在使用 Terraform 设置规则之前,请确保已完成以下步骤:
- 安装 Terraform CLI 并为 Terraform 配置 IBM Cloud Provider 插件。 更多信息,请参见 IBM Cloud® 上的 Terraform 入门 教程。 该插件抽象了用于完成这项任务的 IBM Cloud API。
- 创建名为
main.tf的 Terraform 配置文件。 在该文件中,您可以使用 HashiCorp 配置语言定义资源。 更多信息,请参阅 Terraform 文档。
动态规则是通过设置条件创建的,这些条件必须与 IdP 中配置的数据相匹配,并在登录时与用户的联合 ID 一起传入。 可以为一个规则添加多个条件。 必须满足规则中设置的所有条件才能将用户添加到访问组。
要使用 Terraform 创建规则,请按照以下步骤操作:
-
在
main.tf文件中创建一个参数。 下面的示例通过使用ibm_iam_access_group_dynamic_rule资源为访问组创建新的动态规则,其中name是标识动态规则的唯一名称。resource "ibm_iam_access_group_dynamic_rule" "rule1" { name = "newrule" access_group_id = "AccessGroupId-dsnd4bvsaf" expiration = 4 identity_provider = "test-idp.com" conditions { claim = "blueGroups" operator = "CONTAINS" value = "\"test-bluegroup-saml\"" } }更多信息,请参阅 Terraform 文档 页面中的参数参考详情。
使用联合用户管理的 IAM 访问组模块自动生成动态成员资格。 了解 Terraform IBM 模块。
下面的示例演示了使用 Terraform IBM 模块 (TIM) 创建具有动态规则的访问组:
module "access_group" {
source = "terraform-ibm-modules/iam-access-group/ibm"
version = "X.X.X" # Replace with the latest version
access_group_name = "federated-managers"
access_group_description = "Access group for federated managers"
dynamic_rules = [
{
name = "manager-rule"
expiration = 12
identity_provider = "https://idp.example.org/SAML2"
conditions = [
{
claim = "isManager"
operator = "EQUALS"
value = "true"
}
]
}
]
}
有关更多配置选项和示例,请参阅 IAM 访问组模块文档。
-
完成构建配置文件后,初始化 Terraform CLI。 更多信息,请参阅 初始化工作目录。
terraform init -
从
main.tf文件调配资源。 如需了解更多信息,请参阅 使用 Terraform 配置基础架构。-
运行
terraform plan生成 Terraform 执行计划,以预览建议的操作。terraform plan -
运行
terraform apply以创建计划中定义的资源。terraform apply
-
有关用于创建动态规则的字段的更多信息,请参阅 IAM 条件属性。
查看访问组的动态成员
您可以查看通过使用动态规则添加到访问组的用户。 要查看访问组的动态成员,请转到 IBM Cloud 控制台中的管理 > 访问 (IAM) > 访问组。 选择访问组,然后单击用户。 动态添加的用户用 Dynamic 类型表示。
以下用户不会出现在表格中:
- 动态添加尚未登录的用户。
- 动态添加会话过期的用户。
已注销但会话仍然有效的动态用户会继续出现在表中,直到其会话过期。
无法手动删除动态用户。 要删除动态用户,请调整动态规则。
查看用户的动态成员资格
您还可以通过完成以下步骤,查看用户根据动态规则添加到的访问组列表:
- 转到 IBM Cloud 控制台中的管理 > 访问 (IAM) > 用户。
- 点击用户。
- 点击访问。
- 用户作为动态成员的访问组由
Dynamic类型表示。
示例规则
下面的示例包括动态规则每个字段的值。 在此规则中,在联合 IdP 中被识别为经理的用户会被映射到 IBM Cloud 访问组,该访问组仅为经理设置了特定访问权限。
| 字段 | 值 |
|---|---|
| 名称 | 管理者组规则 |
| 身份提供者 | https://idp.example.org/SAML2 |
| 到期时间(小时) | 12 个月 |
| 满足以下条件时添加用户(属性名称) | isManager |
| 比较器 | 等于 |
| 值 | 是 |