Concessione agli utenti dell'accesso alle risorse di tag e agli ID servizio
In qualità di proprietario dell'account, si potrebbe voler delegare parte della responsabilità di etichettare le risorse e gli ID dei servizi. Per consentire agli utenti di allegare tag a una risorsa o a un ID servizio, è necessario concedere loro l'accesso appropriato. Utilizza IBM Cloud® Identity and Access Management (IAM) access policies per concedere agli utenti l'accesso alle risorse in un gruppo di risorse.
Le tag sono visibili a livello di account e possono essere replicati tra le regioni geografiche. Poiché i tag non sono informazioni regolamentate, evita di creare tag che utilizzano informazioni personali, come il tuo nome, indirizzo, numero di telefono, indirizzo email o altre informazioni di identificazione o proprietarie.
Autorizzazioni delle operazioni di tag
Qualsiasi utente in un account può visualizzare i tag. Quando una risorsa è contrassegnata con tag, tutti gli utenti che hanno accesso read alla risorsa possono visualizzare la tag. Per collegare o scollegare una tag su un ID risorsa
o servizio, sono necessari determinati ruoli di accesso o autorizzazioni a seconda del tipo di risorsa e del tipo di tag. Vedere la tabella seguente per capire quale ruolo è necessario per ogni tipo di risorsa.
| Tipo di risorsa | Ruolo |
|---|---|
| Abilitato a IAM | Per allegare o scollegare le tag utente, l'editor o l'amministratore sulla risorsa Per allegare o scollegare le tag di gestione accessi, l'amministratore sulla risorsa Per visualizzare le politiche assegnate sulla risorsa che ha una tag di gestione accessi collegata, ruolo visualizzatore |
| Bare metal sull'infrastruttura classica | Visualizza i dettagli hardware e l'accesso a una serie specifica di servizi o a tutti i server bare metal |
| Host dedicati sull'infrastruttura classica | Visualizza i dettagli dell'host dedicato virtuale e l'accesso a una specifica serie di servizi o a tutti gli host dedicati |
| Server virtuale sull'infrastruttura classica | Visualizzare i dettagli del server virtuale e accedere a una serie specifica di servizi o a tutti i server virtuali |
| Cloud Object Storage S3 sull'infrastruttura classica | Autorizzazione di gestione dell'archiviazione |
| File Storage sull'infrastruttura classica | Autorizzazione di gestione dell'archiviazione |
| Backup evault sull'infrastruttura classica | Autorizzazione di gestione dell'archiviazione |
| Content Delivery Network sull'infrastruttura classica | Gestisci autorizzazione account CDN |
| Direct Link sull'infrastruttura classica | Membro account |
| Hardware Firewall | Gestisci firewall |
| FortiGate Security Appliance | Gestisci firewall |
| IBM Cloud Load Balancer | Gestisci programmi di bilanciamento del carico |
| Gateway Appliance | Gestisci gateway di rete |
| ID servizio | Per allegare o scollegare le tag utente, l'editor o l'amministratore sul servizio IAM Identity Per allegare o scollegare le tag di gestione dell'accesso, l'amministratore sul servizio IAM Identity |
Concedere agli utenti l'accesso alle risorse abilitate per i tag IAM
Completa la seguente procedura per assegnare il ruolo Editor per consentire a un utente di eseguire operazioni di tag su risorse abilitate a IAM:
- Dalla console IBM Cloud, fare clic su Gestione > Accesso (IAM) e selezionare Gruppi di accesso.
- Fai clic su Crea.
- Inserire un nome e una descrizione del gruppo e fare clic su Crea.
- Aggiungere gli utenti al gruppo di accesso facendo clic su Aggiungi utenti, selezionando uno o più utenti dalla tabella e facendo clic su Aggiungi al gruppo.
- Fare clic su Accesso > Assegnazione dell'accesso.
- Selezionare Tutti i servizi di Identità e accesso abilitati o un servizio specifico.
- Selezionare una posizione specifica.
- Selezionare Editor dall'elenco di ruoli di accesso della piattaforma e fare clic su Rivedi.
- Fare clic su Aggiungi per aggiungere la configurazione della politica al riepilogo della politica.
- Fai clic su Assegna.
Concessione dell'accesso agli utenti per contrassegnare le risorse abilitate a IAM utilizzando l'API
Per assegnare il ruolo di editor a un utente per contrassegnare con tag le risorse abilitate a IAM, richiama l'API di gestione della politica IAM come mostrato nella seguente richiesta di esempio. Sostituire le variabili con il servizio di destinazione e il nome della risorsa.
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))
Concedere agli utenti l'accesso alle risorse dell'infrastruttura tag classic
Le risorse taggabili per l'infrastruttura classica sono Virtual Guest, Virtual Dedicated Host, Network Application Delivery Controller, Gateway Member, Subnet, VLAN e VLAN Firewall (Dedicated). Completa la seguente procedura per assegnare il ruolo di accesso ai servizi Gestore per consentire a un utente di eseguire operazioni di tag sui servizi dell'infrastruttura classica.
- Fai clic su Gestisci > Accesso (IAM) e seleziona Utenti.
- Fare clic sul nome dell'utente nella tabella.
- Fai clic su Infrastruttura classica.
- Dalla scheda Autorizzazioni, espandi la categoria Dispositivi.
- Seleziona Visualizza dettagli hardware e Visualizza dettagli server virtuale. Se è necessario assegnare l'accesso a Cloud Object Storage S3, File Storage, o Evault Backup, assegnare l'autorizzazione Storage manage. Se devi assegnare l'accesso a Content Delivery Network, assegna l'autorizzazione Manage CDN Account.
- Fare clic su Salva.
- Fai clic sulla scheda Dispositivi.
- Seleziona Tutti i server bare metal o Tutti i server virtuali, a seconda della risorsa a cui vuoi che l'utente possa taggare.
Concessione agli utenti dell'accesso agli ID servizio tag
Completa la seguente procedura per assegnare il ruolo di amministratore su IAM Identity Service per un utente:
- Fai clic su Gestisci > Accesso (IAM) e seleziona Utenti.
- Fare clic sul nome dell'utente nella tabella.
- Selezionare il servizio IAM Identity e fare clic su Avanti.
- Selezionare Tutte le risorse e fare clic su Avanti.
- Selezionare il ruolo di amministratore.
- Fare clic su Rivedi > Aggiungi.
- Fai clic su Assegna.
Concessione agli utenti dell'accesso agli ID servizio tag utilizzando l'API
Per assegnare il ruolo di amministratore su IAM Identity Service per un utente, richiama l'API IAM Policy Management come mostrato nella seguente richiesta di esempio. Sostituisci i valori con l'ID IAM e l'account del tuo utente di destinazione.
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))