为访问组创建动态规则

您可以创建动态规则,以根据特定身份属性自动将联合用户添加到访问组。 当用户使用联合 ID 登录时,身份提供商 ( IdP ) 的数据会根据用户设置的规则将用户动态映射到访问组。

用户已经在您公司的域中拥有特定的身份信息,并且他们使用联合标识登录时,可以使用 SAML 断言来传递此数据。 在 IdP 中配置的 SAML 断言或属性语句提供了用于创建每条规则的数据。 例如,您可能有将用户定义为管理者的 true 或 false 属性语句。 此信息可用于将作为管理者的所有用户添加到 IBM Cloud® 帐户中已创建的特定管理者访问组。 有关更多信息,请参阅如何 控制云资源访问的教程和 示例规则

只有已受邀加入帐户的用户才能使用动态规则映射到访问组。

使用控制台设置规则

动态规则是通过设置条件创建的,这些条件必须与 IdP 中配置的数据相匹配,并在登录时与用户的联合 ID 一起传入。 可以为一个规则添加多个条件。 必须满足规则中设置的所有条件才能将用户添加到访问组。

要创建规则,请执行以下步骤:

  1. 在 IBM Cloud 控制台中,单击管理 > 访问 (IAM),然后选择访问组
  2. 选择要创建规则的访问组名称。 此操作将打开组详细信息页面。
  3. 选择动态规则
  4. 单击添加规则
  5. 输入 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 创建规则,请按照以下步骤操作:

  1. 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 访问组模块文档

  1. 完成构建配置文件后,初始化 Terraform CLI。 更多信息,请参阅 初始化工作目录

    terraform init
    
  2. main.tf 文件调配资源。 如需了解更多信息,请参阅 使用 Terraform 配置基础架构

    1. 运行 terraform plan 生成 Terraform 执行计划,以预览建议的操作。

      terraform plan
      
    2. 运行 terraform apply 以创建计划中定义的资源。

      terraform apply
      

有关用于创建动态规则的字段的更多信息,请参阅 IAM 条件属性

查看访问组的动态成员

您可以查看通过使用动态规则添加到访问组的用户。 要查看访问组的动态成员,请转到 IBM Cloud 控制台中的管理 > 访问 (IAM) > 访问组。 选择访问组,然后单击用户。 动态添加的用户用 Dynamic 类型表示。

以下用户不会出现在表格中:

  • 动态添加尚未登录的用户。
  • 动态添加会话过期的用户。

已注销但会话仍然有效的动态用户会继续出现在表中,直到其会话过期。

无法手动删除动态用户。 要删除动态用户,请调整动态规则。

查看用户的动态成员资格

您还可以通过完成以下步骤,查看用户根据动态规则添加到的访问组列表:

  1. 转到 IBM Cloud 控制台中的管理 > 访问 (IAM) > 用户
  2. 点击用户。
  3. 点击访问
  4. 用户作为动态成员的访问组由 Dynamic 类型表示。

示例规则

下面的示例包括动态规则每个字段的值。 在此规则中,在联合 IdP 中被识别为经理的用户会被映射到 IBM Cloud 访问组,该访问组仅为经理设置了特定访问权限。

访问组动态规则示例
字段
名称 管理者组规则
身份提供者 https://idp.example.org/SAML2
到期时间(小时) 12 个月
满足以下条件时添加用户(属性名称) isManager
比较器 等于