Assegnazione dell'accesso per la gestione aziendale
Per assegnare a un utente i diritti di gestione di un'azienda IBM Cloud®, è necessario invitarlo all'account aziendale e assegnargli i diritti di accesso al servizio di gestione dell'account aziendale.
L'accesso per gestire l'azienda richiede una politica di accesso all'interno dell'account aziendale. Quando assegni a un utente una politica del servizio di gestione dell'account aziendale all'interno di un account secondario in un'azienda, l'utente non può gestire l'azienda a cui appartiene l'account. A seconda del ruolo assegnato per il servizio di gestione degli account aziendali all'interno dell'account aziendale, l'utente può eseguire azioni specifiche:
- Creare nuovi account nell'azienda
- Creare e fornire il nome ai gruppi di account
- Spostare gli account tra i gruppi di account
- Cancellare gli account dopo che tutte le risorse associate sono state eliminate
- Importare gli account esistenti nell'azienda
- Aggiornare il nome e il dominio dell'azienda
- Visualizzare i rapporti di utilizzo, utilizzati per calcolare la fatturazione, per l'azienda, un gruppo di account specifico, account all'interno di gruppi di account o un account specifico, con dettagli disponibili a livello di piano
- Creare modelli IAM gestiti dall'azienda
- Assegnare modelli IAM gestiti dall'azienda agli account secondari
- Assegnare modelli IAM agli account figlio
- Impostare le notifiche di spesa sugli account figlio per avvisare i membri dell'impresa
- Monitorare la sicurezza e la conformità con IBM Cloud Security and Compliance Center Workload Protection
- Condividere cataloghi privati
Una politica che consente a un utente di accedere al servizio aziendale può essere assegnata a livello dell'intera azienda oppure solo a un gruppo specifico di account o a un singolo account.
Normalmente, l'account aziendale stesso non contiene molte risorse. Invece, le risorse vengono create negli account secondari dell'azienda. È all'interno di ognuno di questi account che gli utenti possono essere invitati e gli viene fornito l'accesso per gestire ed utilizzare le risorse. L'accesso e l'appartenenza a disposizione di un utente nell'account aziendale non si applicano ai gruppi di account o agli account secondari nella gerarchia aziendale. La gestione degli utenti e la gestione degli accessi rimangono separate per ciascun account, come si può vedere nei diagrammi seguenti.
Il primo diagramma mostra come assegnare una policy a un utente nell'account aziendale per gestire l'intera azienda. Il secondo diagramma mostra una policy che è limitata a un gruppo di account che fornisce l'accesso per gestire solo quel gruppo di account e gli account secondari che sono organizzati al suo interno.
La destinazione e il ruolo della politica sono importanti nel determinare l'ambito dell'accesso. Un utente, un ID di servizio o un gruppo di accesso in un'azienda possono completare le attività di gestione aziendale:
- In tutta l'azienda.
- Su un gruppo di account che potrebbe contenere altri gruppi di account e account.
- Su un unico conto.
Ad esempio, un utente può completare le attività all'interno di un gruppo di account se gli è stata assegnata una politica di accesso sul servizio di gestione degli account Enterprise con un obiettivo che è limitato a un gruppo di account specifico. L'utente non completare le azioni che riguardano l'intera azienda, come l'aggiornamento del nome o del dominio aziendali, quando la destinazione è impostata su uno specifico gruppo di account o account.
Puoi assegnare gli utenti in un account secondario nelle politiche di accesso aziendali che si applicano alla gestione soltanto di tale account o delle risorse che contiene. Ad esempio, se si assegna a un utente di un account secondario un ruolo nel servizio di gestione degli account aziendali, tale utente non potrà eseguire operazioni a livello di account aziendale. Devi aggiungerlo all'account aziendale e assegnargli la politica in tale contesto.
Politiche necessarie per lavori specifici
A seconda del lavoro che deve essere fatto, potrebbe essere necessaria una combinazione di politiche per un utente che non è il proprietario dell'azienda. I seguenti esempi forniscono la serie di politiche di accesso che devi assegnare a un utente nell'azienda in modo che possa completare delle particolari azioni.
Se sei il proprietario di un account che non fa parte di un'azienda, ma vuoi che un altro utente nel tuo account possa convertire il tuo account in un'azienda, puoi assegnare a tale utente il ruolo di amministratore sul servizio di gestione dell'account di fatturazione.
Visualizzazione dell'utilizzo e gestione della fatturazione nell'azienda
Per consentire a un utente di visualizzare i report di utilizzo per tutti gli account nell'azienda, di effettuare i pagamenti e di visualizzare le fatture, devi assegnare tutte le seguenti politiche di accesso:
- Il ruolo di visualizzatore dei report di utilizzo per il servizio di gestione dell'account aziendale nell'account aziendale
- Il ruolo di amministratore per il servizio di gestione dell'account aziendale nell'account aziendale
Importazione di un account esistente nell'azienda
Affinché un utente possa importare un account IBM Cloud esistente nell'azienda, è necessario assegnare tutte le seguenti politiche di accesso:
- Il ruolo di amministratore sul servizio di gestione dell'account di fatturazione nell'account che deve essere importato
- Ruolo di amministratore o editore sul servizio di gestione dell'account Enterprise per il gruppo di account o l'account Enterprise
- Il ruolo di amministratore sul servizio di gestione dell'account aziendale per l'account aziendale
Spostamento di un account
Per consentire a un utente di spostare un account all'interno di un'azienda, devi assegnare tutte le seguenti politiche di accesso:
- Il ruolo di amministratore per il servizio di gestione dell'account aziendale nell'account aziendale
Successivamente, una delle seguenti due opzioni:
- Ruolo di amministratore o editor per il servizio di gestione dell'account aziendale per l'intera azienda.
- Ruolo di amministratore o di editore nell'account group attuale e in quello di destinazione
Per ulteriori dettagli sulle azioni che gli utenti possono eseguire in base al proprio ruolo, consultare la sezione " Azioni e ruoli per i servizi di gestione degli account ".
Gestione della sicurezza e della conformità
Affinché un utente possa gestire la sicurezza e la conformità tramite IBM Cloud Security and Compliance Center Workload Protection, è necessario assegnare le seguenti politiche di accesso:
- Ruolo di amministratore o redattore per IBM Cloud Security and Compliance Center Workload Protection
- Ruolo personalizzato per l'Enterprise
Per creare il ruolo personalizzato con le autorizzazioni appropriate, vedere Controllo dell'accesso tramite IAM.
Creazione e assegnazione di modelli IAM gestiti dall'azienda
Per creare modelli IAM gestiti a livello aziendale, è necessario assegnare il ruolo di amministratore dei modelli a tutti i servizi di gestione degli account IAM.
Per assegnare modelli IAM gestiti a livello aziendale agli account secondari, è necessario assegnare il ruolo di “Amministratore dell’assegnazione dei modelli” per tutti i servizi di gestione degli account IAM e una policy che preveda almeno il ruolo di “Visualizzatore” sul servizio aziendale.
Per impostazione predefinita, nessun utente dispone di queste autorizzazioni, compreso il proprietario dell'account.
Per ulteriori dettagli sulle azioni che gli utenti possono eseguire in base al proprio ruolo, consultare la sezione " Azioni e ruoli per i servizi di gestione degli account ".
Assegnazione dell'accesso nella console
Per assegnare una politica di accesso a un utente esistente nell'account aziendale, completa la seguente procedura:
Puoi impostare la destinazione della politica in modo che sia l'intera azienda, uno specifico gruppo di account, che può includere l'accesso a tutti gli account al suo interno o anche a uno specifico account in un gruppo di account.
- Nella console IBM Cloud, fare clic su Gestisci > Accesso (IAM) e selezionare Utenti.
- Nella riga relativa all'utente a cui desideri assegnare l'accesso, fai clic sull'icona Azioni
, quindi seleziona Assegna accesso.
- Dai servizi, selezionare Enterprise.
- Fai clic su Next.
- Ambito di applicazione: accesso a un gruppo di risorse con account secondari specifici o a tutti gli account dell'azienda. Poi, fai clic su Avanti.
- Selezionare una qualsiasi combinazione di ruoli o autorizzazioni e fare clic su Rivedi.
- Fare clic su Aggiungi per aggiungere la configurazione della policy al riepilogo della policy.
- (Opzionale) Ripetere i passaggi per aggiungere un accesso aggiuntivo.
- Fai clic su Assegna.
Per ulteriori informazioni sui ruoli e sulle azioni per assegnare l'accesso in un account aziendale, vedere Assegnazione dell'accesso ai servizi di gestione dell'account.
Assegnazione dell'accesso utilizzando la CLI
Per creare una nuova politica di accesso per un utente, esegui il comando ibmcloud iam user-policy-create. Nell'esempio di comando, viene utilizzato un file JSON per specificare i dettagli della politica. Controlla
l'esempio nella sezione Assegnazione dell'accesso utilizzando l'API per un esempio di cosa è incluso nel
file JSON.
Crea una politica utente:
ibmcloud iam user-policy-create name@example.com -f policy.json
Per ulteriori informazioni, vedi ibmcloud iam user-policy-create.
Assegnazione dell'accesso utilizzando l'API
L'esempio di richiesta riportato di seguito assegna una policy a un utente con il ruolo Editor sul servizio Enterprise in un account aziendale, il cui ambito è limitato a un gruppo di account. Questo tipo di politica è gerarchica e si applica a tutti gli oggetti discendenti nella gerarchia, il che significa tutti i gruppi di account o gli account all'interno del gruppo di account di destinazione specificato.
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:Viewer")
.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();
ResourceTag policyResourceTag = new ResourceTag.Builder()
.name("project")
.value("prototype")
.operator("stringEquals")
.build();
PolicyResource policyResources = new PolicyResource.Builder()
.addAttributes(accountIdResourceAttribute)
.addAttributes(serviceNameResourceAttribute)
.addTags(policyResourceTag)
.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:Viewer',
},
];
const accountIdResourceAttribute = {
name: 'accountId',
value: exampleAccountId,
operator: 'stringEquals',
};
const serviceNameResourceAttribute = {
name: 'serviceType',
value: 'service',
operator: 'stringEquals',
};
const policyResourceTag = {
name: 'project',
operator: 'stringEquals',
value: 'prototype',
};
const policyResources = [
{
attributes: [accountIdResourceAttribute, serviceNameResourceAttribute],
tags: [policyResourceTag],
},
];
const params = {
type: 'access',
subjects: policySubjects,
roles: policyRoles,
resources: policyResources,
};
iamPolicyManagementService.createPolicy(params)
.then(res => {
examplePolicyId = res.result.id;
console.log('createPolicy() result:\n' + 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:Viewer')
account_id_resource_attribute = ResourceAttribute(
name='accountId', value=example_account_id)
service_name_resource_attribute = ResourceAttribute(
name='serviceType', value='service')
policy_resource_tag = ResourceTag(
name='project', value='prototype')
policy_resources = PolicyResource(
attributes=[account_id_resource_attribute,
service_name_resource_attribute],
tags=[policy_resource_tag])
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:Viewer"),
}
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"),
}
policyResourceTag := &iampolicymanagementv1.ResourceTag{
Name: core.StringPtr("project"),
Value: core.StringPtr("prototype"),
Operator: core.StringPtr("stringEquals"),
}
policyResources := &iampolicymanagementv1.PolicyResource{
Attributes: []iampolicymanagementv1.ResourceAttribute{
*accountIDResourceAttribute, *serviceNameResourceAttribute},
Tags: []iampolicymanagementv1.ResourceTag{*policyResourceTag},
}
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))
Per ulteriori informazioni, consulta la sezione " Creare una politica ".