IBM Cloud Docs
分配对IBM Cloud Metrics Routing的访问权限

分配对IBM Cloud Metrics Routing的访问权限

您账户中用户和应用程序对IBM Cloud® Metrics Routing配置资源的访问受IBM Cloud®控制。Identity and Access Management(IAM) 进行控制。 必须为账户中访问IBM Cloud Metrics Routing服务的每个用户或应用程序分配具有 IAM 角色的访问策略。 查看以下角色和操作等,以帮助确定分配对 IBM Cloud Metrics Routing的访问权的最佳方法。

您可以使用下列任何方法来分配对 IBM Cloud Metrics Routing 的访问权:

  • 每个用户的访问策略

  • 访问组

    访问组用于简化访问管理,方法是一次性分配对组的访问权,然后您可以根据需要在组中添加或除去用户以控制其访问权。

    可以创建一个访问组,将一组用户、服务 ID 和受信任的配置文件组织成一个单一的实体,方便你分配访问权限。 您可以将单个策略分配给组,而不是为单个用户或服务 ID.For 更多信息,请参阅 设置访问组

    要将一组用户和服务 ID 组织成单一实体,以便于管理 IAM 权限,可使用访问组。 您可以将单个策略分配给该组,而不用对每个用户或服务标识多次分配相同的访问权。

  • 可信概要文件

    您可以使用可信概要文件来授予对帐户中资源的不同 IBM Cloud® 身份访问权。 根据公司目录中的 SAML 属性,使用条件自动授予联合用户对您帐户的访问权。 或者,使用可信配置文件为在计算资源中运行的应用程序设置细粒度授权。 这样,您就无需为计算资源创建服务标识或 API 密钥。 您还可以与其他帐户中的 IBM Cloud 服务或服务标识建立信任,以授予跨帐户访问权。 有关更多信息,请参阅 创建可信概要文件

如果拥有创建策略和授权的 IAM 权限,则只能授予作为目标服务用户所拥有的访问权限级别。 例如,如果您拥有目标服务的查看器访问权限,则只能为授权分配查看器角色。 如果尝试分配更高级别的权限(如管理员),可能会出现权限已授予的情况,但只会分配目标服务的最高级别权限(即查看器)。

在控制台中分配对 IBM Cloud Metrics Routing 的访问权

可以通过两种常见方法在控制台中分配对 IBM Cloud Metrics Routing 的访问权:

  • 访问组。 您可以从控制台中的“管理 > 访问权 (IAM) > 访问组”页面管理访问组及其访问权。 有关更多信息,请参阅 在控制台中分配对组的访问权

  • 每个用户的访问策略。 您可以从控制台中的“管理 > 访问权 (IAM) > 用户”页面管理每个用户的访问策略。 有关分配 IAM 访问权的步骤的信息,请参阅 管理对资源的访问权

在 CLI 中分配对 IBM Cloud Metrics Routing 的访问权

有关分配,除去和复审访问权的逐步指示信息,请参阅 使用 CLI 分配访问 ro 资源。 以下示例显示了用于为 IBM Cloud Metrics Routing 分配 Viewer 角色的命令:

使用 metrics-router 作为服务名称。 此外,请在多个词的角色名称周围使用引号。

ibmcloud iam user-policy-create USER@EXAMPLE.COM --service-name metrics-router --roles "Viewer"

使用 API 分配对IBM Cloud Metrics Routing的访问权限

有关分配,除去和复审访问权的逐步指示信息,请参阅 使用 API 分配对资源的访问权创建策略 API 文档。 下表中的角色云资源名称 (CRN) 用于分配对 API 的访问权。

供应用程序接口使用的角色 ID 值
角色名称 角色 CRN
查看者 crn:v1:bluemix:public:metrics-router::::serviceRole:Viewer
运算符 crn:v1:bluemix:public:metrics-router::::serviceRole:Operator
编辑者 crn:v1:bluemix:public:metrics-router::::serviceRole:Editor
管理员 crn:v1:bluemix:public:metrics-router::::serviceRole:Administrator

以下示例用于为 IBM Cloud Metrics Routing 分配 Viewer 角色:

使用 metrics-router 作为服务名称,并参阅“角色标识值”表以确保您对 CRN 使用正确的值。

curl -X POST 'https://iam.cloud.ibm.com/v1/policies' -H 'Authorization: Bearer $TOKEN' -H 'Content-Type: application/json' -d '{
  "type": "access",
  "description": "Viewer role for IBM Cloud Metrics Routing",
  "subjects": [
    {
      "attributes": [
        {
          "name": "iam_id",
          "value": "IBMid-123453user"
        }
      ]
    }'
  ],
  "roles":[
    {
      "role_id": "crn:v1:bluemix:public:metrics-router::::serviceRole:Viewer"
    }
  ],
  "resources":[
    {
      "attributes": [
        {
          "name": "accountId",
          "value": "$ACCOUNT_ID"
        },
        {
          "name": "serviceName",
          "value": "metrics-router"
        }
      ]
    }
  ]
}
SubjectAttribute subjectAttribute = new SubjectAttribute.Builder()
      .name("iam_id")
      .value("IBMid-123453user")
      .build();

PolicySubject policySubjects = new PolicySubject.Builder()
      .addAttributes(subjectAttribute)
      .build();

PolicyRole policyRoles = new PolicyRole.Builder()
      .roleId("crn:v1:bluemix:public:metrics-router::::serviceRole:Viewer")
      .build();

ResourceAttribute accountIdResourceAttribute = new ResourceAttribute.Builder()
      .name("accountId")
      .value("ACCOUNT_ID")
      .operator("stringEquals")
      .build();

ResourceAttribute serviceNameResourceAttribute = new ResourceAttribute.Builder()
      .name("serviceName")
      .value("metrics-router")
      .operator("stringEquals")
      .build();

PolicyResource policyResources = new PolicyResource.Builder()
      .addAttributes(accountIdResourceAttribute)
      .addAttributes(serviceNameResourceAttribute)
      .build();

CreatePolicyOptions options = new CreatePolicyOptions.Builder()
      .type("access")
      .subjects(Arrays.asList(policySubjects))
      .roles(Arrays.asList(policyRoles))
      .resources(Arrays.asList(policyResources))
      .build();

Response<Policy> response = service.createPolicy(options).execute();
Policy policy = response.getResult();

System.out.println(policy);
const policySubjects = [
  {
    attributes: [
      {
        name: 'iam_id',
        value: 'IBMid-123453user',
      },
    ],
  },
];
const policyRoles = [
  {
    role_id: 'crn:v1:bluemix:public:metrics-router::::serviceRole:Viewer',
  },
];
const accountIdResourceAttribute = {
  name: 'accountId',
  value: 'ACCOUNT_ID',
  operator: 'stringEquals',
};
const serviceNameResourceAttribute = {
  name: 'serviceName',
  value: 'metrics-router',
  operator: 'stringEquals',
};
const policyResources = [
  {
    attributes: [accountIdResourceAttribute, serviceNameResourceAttribute]
  },
];
const params = {
  type: 'access',
  subjects: policySubjects,
  roles: policyRoles,
  resources: policyResources,
};

iamPolicyManagementService.createPolicy(params)
  .then(res => {
    examplePolicyId = res.result.id;
    console.log(JSON.stringify(res.result, null, 2));
  })
  .catch(err => {
    console.warn(err)
  });
policy_subjects = PolicySubject(
  attributes=[SubjectAttribute(name='iam_id', value='IBMid-123453user')])
policy_roles = PolicyRole(
  role_id='crn:v1:bluemix:public:metrics-router::::serviceRole:Viewer')
account_id_resource_attribute = ResourceAttribute(
  name='accountId', value='ACCOUNT_ID')
service_name_resource_attribute = ResourceAttribute(
  name='serviceName', value='metrics-router')
policy_resources = PolicyResource(
  attributes=[account_id_resource_attribute,
        service_name_resource_attribute])

policy = iam_policy_management_service.create_policy(
  type='access',
  subjects=[policy_subjects],
  roles=[policy_roles],
  resources=[policy_resources]
).get_result()

print(json.dumps(policy, indent=2))
subjectAttribute := &iampolicymanagementv1.SubjectAttribute{
  Name:  core.StringPtr("iam_id"),
  Value: core.StringPtr("IBMid-123453user"),
}
policySubjects := &iampolicymanagementv1.PolicySubject{
  Attributes: []iampolicymanagementv1.SubjectAttribute{*subjectAttribute},
}
policyRoles := &iampolicymanagementv1.PolicyRole{
  RoleID: core.StringPtr("crn:v1:bluemix:public:metrics-router::::serviceRole:Viewer"),
}
accountIDResourceAttribute := &iampolicymanagementv1.ResourceAttribute{
  Name:     core.StringPtr("accountId"),
  Value:    core.StringPtr("ACCOUNT_ID"),
  Operator: core.StringPtr("stringEquals"),
}
serviceNameResourceAttribute := &iampolicymanagementv1.ResourceAttribute{
  Name:     core.StringPtr("serviceName"),
  Value:    core.StringPtr("metrics-router"),
  Operator: core.StringPtr("stringEquals"),
}
policyResources := &iampolicymanagementv1.PolicyResource{
  Attributes: []iampolicymanagementv1.ResourceAttribute{
    *accountIDResourceAttribute, *serviceNameResourceAttribute}
}

options := iamPolicyManagementService.NewCreatePolicyOptions(
  "access",
  []iampolicymanagementv1.PolicySubject{*policySubjects},
  []iampolicymanagementv1.PolicyRole{*policyRoles},
  []iampolicymanagementv1.PolicyResource{*policyResources},
)

policy, response, err := iamPolicyManagementService.CreatePolicy(options)
if err != nil {
  panic(err)
}
b, _ := json.MarshalIndent(policy, "", "  ")
fmt.Println(string(b))

使用 Terraform 分配对 IBM Cloud Metrics Routing 的访问权

以下示例用于为 IBM Cloud Metrics Routing 分配 Viewer 角色:

使用 metrics-router 作为服务名称。

resource "ibm_iam_user_policy" "policy" {
  ibm_id = "test@example.com"
  roles  = ["Viewer"]

  resources {
    service = "metrics-router"
  }
}

有关更多信息,请参阅 ibm_iam_user_policy