Concedendo aos usuários acesso a recursos de tag e IDs de serviço
Como proprietário da conta, talvez você queira delegar parte da responsabilidade de marcar recursos e IDs de serviço. Para que os usuários possam anexar tags a um recurso ou ID de serviço, é necessário conceder-lhes o acesso adequado. Use as políticas de acesso do IBM Cloud® Identity and Access Management (IAM) para conceder aos usuários o acesso a recursos em um grupo de recursos.
As tags são visíveis em toda a conta e podem ser replicadas pelas regiões geográficas. Uma vez que as tags não são informações regulamentadas, evite criar tags que utilizem informações pessoais, como seu nome, endereço, número de telefone, endereço de e-mail ou outras informações identificáveis ou protegidas por direitos autorais.
Identificando permissões
Qualquer usuário em uma conta pode visualizar tags. Quando um recurso é marcado, todos os usuários que têm acesso read ao recurso podem visualizar a marca. Para anexar ou desanexar uma tag em um recurso ou ID de serviço, são necessárias
determinadas funções ou permissões de acesso, dependendo do tipo de recurso e do tipo de tag. Consulte a tabela a seguir para entender qual função é necessária para cada tipo de recurso.
| Tipo de Recurso | Função |
|---|---|
| Ativado para IAM | Para anexar ou desanexar tags de usuário, editor ou administrador no recurso Para anexar ou desanexar tags de gerenciamento de acesso, administrador no recurso Para visualizar as políticas designadas no recurso que possui uma tag de gerenciamento de acesso que é anexada, função do visualizador |
| Bare metal na infraestrutura clássica | Visualizar os detalhes do hardware e o acesso a um conjunto específico de serviços ou a todos os servidores bare metal |
| Hosts dedicados na infraestrutura clássica | Visualizar os detalhes do host dedicado virtual e o acesso a um conjunto específico de serviços ou a todos os hosts dedicados |
| Servidor virtual na infraestrutura clássica | Visualizar os detalhes do servidor virtual e o acesso a um conjunto específico de serviços ou a todos os servidores virtuais |
| Cloud Object Storage S3 na infraestrutura clássica | Permissão de gerenciamento de armazenamento |
| Armazenamento de arquivo na infraestrutura clássica | Permissão de gerenciamento de armazenamento |
| Backup do Evault na infraestrutura clássica | Permissão de gerenciamento de armazenamento |
| Rede de entrega de conteúdo na infraestrutura clássica | Gerenciar a permissão de conta do CDN |
| Direct Link na infraestrutura clássica | Membro da conta |
| Hardware Firewall | Gerenciar Firewalls |
| FortiGate Security Appliance | Gerenciar Firewalls |
| IBM Cloud Load Balancer | Gerenciar Load Balancers |
| Gateway Appliance | Gerenciar gateways de rede |
| IDs de serviço | Para anexar ou desanexar tags de usuário, editor ou administrador no serviço de Identidade do IAM Para anexar ou desanexar tags de gerenciamento de acesso, o administrador no serviço de Identidade do IAM |
Concedendo acesso aos usuários para identificar recursos ativados para IAM
Conclua as etapas a seguir para designar a função de editor para um usuário a fim de identificar recursos ativados para IAM:
- No console do IBM Cloud, clique em Gerenciar > Acessar (IAM) e selecione Grupos de acesso.
- Clique em Criar.
- Insira um nome do grupo e descrição e clique em Criar.
- Inclua usuários no grupo de acesso clicando em Incluir usuários, selecionando um ou mais usuários da tabela e clicando em Incluir no grupo.
- Clique em Acesso > Atribuir acesso.
- Selecione Todos os serviços ativados para identidade e acesso ou um serviço específico.
- Selecione um local específico.
- Selecione Editor na lista de funções de acesso à plataforma e clique em Revisão.
- Clique em Incluir para incluir sua configuração de política em seu resumo de política.
- Clique em Designar.
Concedendo acesso aos usuários para identificar recursos ativados por IAM usando a API
Para atribuir a função de editor a um usuário para marcar recursos habilitados para IAM, chame a API de gerenciamento de políticas de IAM, conforme mostrado no exemplo de solicitação a seguir. Substitua variáveis por seu serviço de destino e nome do recurso.
curl -X POST 'https://iam.cloud.ibm.com/v1/policies' -H 'Authorization: Bearer $TOKEN' -H 'Content-Type: application/json' -d '{
"type": "access",
"description": "Editor role for SERVICE_NAME's RESOURCE_NAME",
"subjects": [
{
"attributes": [
{
"name": "iam_id",
"value": "IBMid-123453user"
}
]
}'
],
"roles":[
{
"role_id": "crn:v1:bluemix:public:iam::::role:Editor"
}
],
"resources":[
{
"attributes": [
{
"name": "accountId",
"value": "$ACCOUNT_ID"
},
{
"name": "serviceName",
"value": "$SERVICE_NAME"
},
{
"name": "resource",
"value": "$RESOURCE_NAME",
"operator": "stringEquals"
}
]
}
]
}'
SubjectAttribute subjectAttribute = new SubjectAttribute.Builder()
.name("iam_id")
.value(EXAMPLE_USER_ID)
.build();
PolicySubject policySubjects = new PolicySubject.Builder()
.addAttributes(subjectAttribute)
.build();
PolicyRole policyRoles = new PolicyRole.Builder()
.roleId("crn:v1:bluemix:public:iam::::role:Editor")
.build();
ResourceAttribute accountIdResourceAttribute = new ResourceAttribute.Builder()
.name("accountId")
.value(exampleAccountId)
.operator("stringEquals")
.build();
ResourceAttribute serviceNameResourceAttribute = new ResourceAttribute.Builder()
.name("serviceType")
.value("service")
.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: exampleUserId,
},
],
},
];
const policyRoles = [
{
role_id: 'crn:v1:bluemix:public:iam::::role:Editor',
},
];
const accountIdResourceAttribute = {
name: 'accountId',
value: exampleAccountId,
operator: 'stringEquals',
};
const serviceNameResourceAttribute = {
name: 'serviceType',
value: 'service',
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=example_user_id)])
policy_roles = PolicyRole(
role_id='crn:v1:bluemix:public:iam::::role:Editor')
account_id_resource_attribute = ResourceAttribute(
name='accountId', value=example_account_id)
service_name_resource_attribute = ResourceAttribute(
name='serviceType', value='service')
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: &exampleUserID,
}
policySubjects := &iampolicymanagementv1.PolicySubject{
Attributes: []iampolicymanagementv1.SubjectAttribute{*subjectAttribute},
}
policyRoles := &iampolicymanagementv1.PolicyRole{
RoleID: core.StringPtr("crn:v1:bluemix:public:iam::::role:Editor"),
}
accountIDResourceAttribute := &iampolicymanagementv1.ResourceAttribute{
Name: core.StringPtr("accountId"),
Value: core.StringPtr(exampleAccountID),
Operator: core.StringPtr("stringEquals"),
}
serviceNameResourceAttribute := &iampolicymanagementv1.ResourceAttribute{
Name: core.StringPtr("serviceType"),
Value: core.StringPtr("service"),
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))
Concedendo acesso aos usuários para identificar recursos de infraestrutura clássica
Os recursos identificáveis para infraestrutura clássica são Guest virtual, Host dedicado virtual, Controlador de entrega de aplicativo de rede, Membro do gateway, Sub-rede, VLAN e Firewall de VLAN (Dedicado). Conclua as etapas a seguir para designar a função de acesso de serviço do Gerenciador a um usuário para identificar os serviços de infraestrutura clássica:
- Clique em Gerenciar > Acesso (IAM) e selecione Usuários.
- Clique no nome do usuário na tabela.
- Clique em Infraestrutura clássica.
- Na guia Permissões, expanda a categoria Dispositivos.
- Selecione Visualizar detalhes do hardware e Visualizar detalhes do Virtual Server. Se for necessário designar acesso ao Cloud Object Storage S3, ao Armazenamento de objeto ou ao Backup do Evault, designe a permissão Gerenciar armazenamento. Se for necessário designar acesso à rede de entrega de conteúdo, designe a permissão Gerenciar conta de CDN.
- Clique em Salvar.
- Clique na guia Dispositivos.
- Selecione All bare metal servers (Todos os servidores bare metal ) ou All virtual servers (Todos os servidores virtuais ), dependendo do recurso que você deseja que o usuário possa marcar.
Concedendo aos usuários acesso a IDs de serviço de tag..
Conclua as etapas a seguir para designar a função de administrador no IAM Identity Service para um usuário:
- Clique em Gerenciar > Acesso (IAM) e selecione Usuários.
- Clique no nome do usuário na tabela.
- Selecione o serviço IAM Identity e clique em Next.
- Selecione Todos os recursos e clique em Avançar
- Selecione a função Administrador.
- Clique em Revisar > Incluir
- Clique em Designar.
Conceder aos usuários acesso a IDs de serviços de tags usando a API
Para designar a função de administrador no IAM Identity Service para um usuário, chame a API do IAM Policy Management conforme mostrado na solicitação de exemplo a seguir. Substitua os valores pelo ID do IAM e ID da conta do usuário de destino.
curl -X POST 'https://iam.cloud.ibm.com/v1/policies' -H 'Authorization: Bearer $TOKEN' -H 'Content-Type: application/json' -d '{
"type": "access",
"description": "Administrator role for the IAM Identity Service so that user can tag service IDs",
"subjects": [
{
"attributes": [
{
"name": "iam_id",
"value": "IBMid-123453user"
}
]
}'
],
"roles":[
{
"role_id": "crn:v1:bluemix:public:iam::::role:Administrator"
}
],
"resources":[
{
"attributes": [
{
"name": "accountId",
"value": "$ACCOUNT_ID"
},
{
"name": "serviceName",
"value": "iam-identity"
}
]
}
]
}'
SubjectAttribute subjectAttribute = new SubjectAttribute.Builder()
.name("iam_id")
.value(EXAMPLE_USER_ID)
.build();
PolicySubject policySubjects = new PolicySubject.Builder()
.addAttributes(subjectAttribute)
.build();
PolicyRole policyRoles = new PolicyRole.Builder()
.roleId("crn:v1:bluemix:public:iam::::role:Administrator")
.build();
ResourceAttribute accountIdResourceAttribute = new ResourceAttribute.Builder()
.name("accountId")
.value(exampleAccountId)
.operator("stringEquals")
.build();
ResourceAttribute serviceNameResourceAttribute = new ResourceAttribute.Builder()
.name("serviceType")
.value("iam-identity")
.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: exampleUserId,
},
],
},
];
const policyRoles = [
{
role_id: 'crn:v1:bluemix:public:iam::::role:Administrator',
},
];
const accountIdResourceAttribute = {
name: 'accountId',
value: exampleAccountId,
operator: 'stringEquals',
};
const serviceNameResourceAttribute = {
name: 'serviceType',
value: 'iam-identity',
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=example_user_id)])
policy_roles = PolicyRole(
role_id='crn:v1:bluemix:public:iam::::role:Administrator')
account_id_resource_attribute = ResourceAttribute(
name='accountId', value=example_account_id)
service_name_resource_attribute = ResourceAttribute(
name='serviceType', value='iam-identity')
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: &exampleUserID,
}
policySubjects := &iampolicymanagementv1.PolicySubject{
Attributes: []iampolicymanagementv1.SubjectAttribute{*subjectAttribute},
}
policyRoles := &iampolicymanagementv1.PolicyRole{
RoleID: core.StringPtr("crn:v1:bluemix:public:iam::::role:Administrator"),
}
accountIDResourceAttribute := &iampolicymanagementv1.ResourceAttribute{
Name: core.StringPtr("accountId"),
Value: core.StringPtr(exampleAccountID),
Operator: core.StringPtr("stringEquals"),
}
serviceNameResourceAttribute := &iampolicymanagementv1.ResourceAttribute{
Name: core.StringPtr("serviceType"),
Value: core.StringPtr("iam-identity"),
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))