分配访问权限给 IBM Cloud Activity Tracker Event Routing
您账户中的用户和应用程序访问 IBM Cloud® Activity Tracker Event Routing 配置资源的权限由 IBM Cloud® Identity and Access Management (IAM)控制。 在您的账户中IBM Cloud Activity Tracker Event Routing每个用户或应用程序都必须分配一个带有IAM角色的访问策略。 查看以下角色、操作等,以帮助确定分配IBM Cloud Activity Tracker Event Routing访问权限的最佳方法。
您可以通过以下任意一种方式访问 IBM Cloud Activity Tracker Event Routing:
-
每个用户的访问权限
-
访问组
访问组用于简化访问管理,只需将访问权限分配给一个组,然后根据需要添加或删除组中的用户,即可控制他们的访问权限。
可以创建一个访问组,将一组用户、服务ID和可信配置文件组织成一个单一实体,以便您轻松分配访问权限。 您可以为整个组分配一个策略,而不是为单个用户或服务ID多次分配相同的访问权限。 有关更多信息,请参阅设置访问组。
要组织一组用户和服务ID,使其成为便于管理IAM权限的单一实体,请使用访问组。 您可以将单个策略分配给该组,而不用对每个用户或服务标识多次分配相同的访问权。
-
可信概要文件
您可以使用可信资料来授予不同的 IBM Cloud®访问您帐户中的资源。 根据公司目录中的SAML属性,自动授予联合身份用户访问您帐户的权限。 或者,使用可信配置文件为在计算资源中运行的应用程序设置精细授权。 这样,您就不需要为计算资源创建服务ID或API密钥。 您还可以通过另一个帐户IBM Cloud或服务ID建立信任,以授予跨帐户访问权限。 更多信息,请参阅 创建可信资料。
如果您拥有IAM权限,可以创建策略和授权,但只能授予您作为目标服务用户所拥有的访问权限。 例如,如果您拥有目标服务的查看权限,则只能为授权分配查看者角色。 如果您尝试指定更高的权限,例如管理员,则可能会显示权限已授予,但只会为您分配目标服务的最高权限,即查看者。
在控制台中分配IBM Cloud Activity Tracker Event Routing 的访问权限
在控制台中,有两种常见的方法来分配IBM Cloud Activity Tracker Event Routing访问权限:
-
访问组。 您可以在控制台的 “管理”>“访问”(IAM)> “访问组” 页面中管理访问组及其访问权限。 更多信息,请参阅 在控制台中为组分配访问权限。
-
每个用户的访问权限。 您可以从控制台中的管理 > 访问 (IAM) > 用户页面管理每个用户的访问策略。 有关分配IAM访问权限的步骤,请参阅 管理资源访问权限。
在CLI中分配IBM Cloud Activity Tracker Event Routing 的访问权限
有关分配、删除和查看访问权限的详细步骤,请参阅 使用 CLI 分配资源访问权限。 以下示例显示了IBM Cloud Activity Tracker Event Routing 分配 Viewer
角色的命令:
服务名称请使用 atracker
。 此外,对于由多个单词组成的角色名称,请在前后加上引号。
ibmcloud iam user-policy-create USER@EXAMPLE.COM --service-name atracker --roles "Viewer"
使用API分配IBM Cloud Activity Tracker Event Routing 的访问权限
有关分配、删除和审查访问权限的详细步骤,请参阅 使用API分配资源访问权限 或 创建策略API文档。 下表中的角色云资源名称(CRN)用于通过API分配访问权限。
角色名称 | 角色 CRN |
---|---|
查看者 | crn:v1:bluemix:public:iam::::serviceRole:Viewer |
运算符 | crn:v1:bluemix:public:iam::::serviceRole:Operator |
编辑者 | crn:v1:bluemix:public:iam::::serviceRole:Editor |
管理员 | crn:v1:bluemix:public:iam::::serviceRole:Administrator |
以下示例用于IBM Cloud Activity Tracker Event Routing 分配 Viewer
角色:
服务名称请使用 atracker
,并参考角色 ID 值表,以确保您为 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 Activity Tracker Event Routing",
"subjects": [
{
"attributes": [
{
"name": "iam_id",
"value": "IBMid-123453user"
}
]
}'
],
"roles":[
{
"role_id": "crn:v1:bluemix:public:atracker::::serviceRole:Viewer"
}
],
"resources":[
{
"attributes": [
{
"name": "accountId",
"value": "$ACCOUNT_ID"
},
{
"name": "serviceName",
"value": "atracker"
}
]
}
]
}
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:iam::::serviceRole:Viewer")
.build();
ResourceAttribute accountIdResourceAttribute = new ResourceAttribute.Builder()
.name("accountId")
.value("ACCOUNT_ID")
.operator("stringEquals")
.build();
ResourceAttribute serviceNameResourceAttribute = new ResourceAttribute.Builder()
.name("serviceName")
.value("atracker")
.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:iam::::serviceRole:Viewer',
},
];
const accountIdResourceAttribute = {
name: 'accountId',
value: 'ACCOUNT_ID',
operator: 'stringEquals',
};
const serviceNameResourceAttribute = {
name: 'serviceName',
value: 'atracker',
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:iam::::serviceRole:Viewer')
account_id_resource_attribute = ResourceAttribute(
name='accountId', value='ACCOUNT_ID')
service_name_resource_attribute = ResourceAttribute(
name='serviceName', value='atracker')
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:iam::::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("atracker"),
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 Activity Tracker Event Routing 的访问权限
以下示例用于IBM Cloud Activity Tracker Event Routing 分配 Viewer
角色:
服务名称请使用 atracker
。
resource "ibm_iam_user_policy" "policy" {
ibm_id = "test@example.com"
roles = ["Viewer"]
resources {
service = "atracker"
}
}
更多信息,请参阅 ibm_iam_user_policy。