Sintassi dei criteri

La sintassi generale di un'istruzione criterio è la seguente:

Allow <subject> to <verb> <resource-type> in <location> where <conditions>

Gli spazi di ricambio o le interruzioni di riga nell'istruzione non hanno effetto.

Per i limiti relativi al numero di criteri e istruzioni, vedere Limiti per servizio.

Oggetto

Specificare uno o più gruppi separati da virgole in base al nome o all'OCID. In alternativa, specificare any-group per coprire tutti gli utenti, i principal delle istanze e i principal delle risorse nella tenancy.

Sintassi:{{ group <group_name> | group id <group_ocid> | dynamic-group <dynamic-group_name> | dynamic-group id <dynamic-group_ocid>| any-group | any-user}}

Nota

Qualsiasi utente concederà l'accesso a tutti gli utenti, ai principal delle risorse e ai principal delle istanze nella tenancy e nel principal del servizio. Si consiglia di non utilizzare any-user e di utilizzare any-group. In alternativa, è possibile specificare il tipo di risorsa per impedire l'accesso a principi non necessari. Ad esempio, {request.principal.type='disworkspace'}.

Esempi:

  • Per specificare un singolo gruppo per nome:
    Allow 
    
    group A-Admins
    
     to manage all-resources in compartment Project-A
  • Per specificare più gruppi in base al nome (uno spazio dopo la virgola è facoltativo):
    Allow 
    
    group A-Admins, B-Admins
    
     to manage all-resources in compartment Projects-A-and-B
  • Per specificare un singolo gruppo per OCID (l'OCID viene abbreviato per brevità):
    Allow group 
    
     id ocid1.group.oc1..aaaaaaaaqjihfhvxmum...awuc7i5xwe6s7qmnsbc6a 
    
    to manage all-resources in compartment Project-A
  • Per specificare più gruppi in base all'OCID (gli OCID vengono abbreviati in brevità):
    Allow group 
    
     id ocid1.group.oc1..aaaaaaaaqjihfhvxmumrl...wuc7i5xwe6s7qmnsbc6a,
     id ocid1.group.oc1..aaaaaaaavhea5mellwzb...66yfxvl462tdgx2oecyq 
    
    to manage all-resources in compartment Projects-A-and-B
  • Per specificare un principal di gruppo o istanza nella tenancy o specificare un gruppo qualsiasi per ispezionare gli utenti in una tenancy, effettuare le operazioni riportate di seguito.
    Allow any-group to inspect users in tenancy

Verbo

Specificare un singolo verbo. Per un elenco dei verbi, vedere Verbi. Esempio:

Allow group A-Admins to manage all-resources in compartment Project-A

Tipo di risorsa

Specificare un singolo tipo di risorsa, che può essere uno dei seguenti:

  • Singolo tipo di risorsa (ad esempio, vcns, subnets, instances, volumes e così via)
  • Tipo di risorsa della famiglia (ad esempio, virtual-network-family, instance-family, volume-family e così via)
  • all-resources: copre tutte le risorse nel compartimento (o nella tenancy).

Un tipo di risorsa di famiglia copre una varietà di componenti che vengono in genere utilizzati insieme. Ciò semplifica la scrittura di una policy che consente a qualcuno di accedere a lavorare con vari aspetti della tua rete cloud.

Per un elenco dei tipi di risorsa disponibili, vedere Tipi di risorsa.

Sintassi: <resource_type> | all-resources

Esempi:

  • Per specificare un singolo tipo di risorsa:
    Allow group HelpDesk to manage users in tenancy
  • Per specificare più tipi di risorsa, utilizzare istruzioni separate:
    Allow group A-Users to manage instance-family in compartment Project-A
    
    Allow group A-Users to manage volume-family in compartment Project-A
    
  • Per specificare tutte le risorse nel compartimento (o nella tenancy):
    Allow group A-Admins to manage all-resources in compartment Project-A

Posizione

Specificare un singolo compartimento o percorso di compartimento in base al nome o all'OCID. In alternativa, specificare semplicemente tenancy per coprire l'intera tenancy. Tenere presente che gli utenti, i gruppi e i compartimenti risiedono nella tenancy. I criteri possono risiedere (ad esempio, essere collegati a) nella tenancy o in un compartimento figlio.

Nota

Concessione dell'accesso a aree specifiche o domini di disponibilità

Per creare un criterio che consenta l'accesso a un'area o a un dominio di disponibilità specifico, utilizzare la variabile request.region o request.ad con una condizione. Vedere Condizioni.

L'ubicazione è obbligatoria nell'istruzione. Se si desidera collegare un criterio a un compartimento, è necessario trovarsi in tale compartimento quando si crea il criterio. Per ulteriori informazioni, vedere Allegato criteri.

Per specificare un compartimento che non sia un elemento figlio diretto del compartimento a cui si sta collegando il criterio, specificare il percorso al compartimento utilizzando i due punti (:) come separatore. Per ulteriori informazioni, vedere Criteri e gerarchie di compartimenti.

Sintassi: [ tenancy | compartment <compartment_name> | compartment id <compartment_ocid> ]

Esempi:

  • Per specificare un compartimento in base al nome:
    Allow group A-Admins to manage all-resources in compartment Project-A
  • Per specificare un compartimento in base all'OCID:
    Allow group
     id ocid1.group.oc1..aaaaaaaaexampleocid to manage all-resources in compartment id ocid1.compartment.oc1..aaaaaaaaexampleocid
  • Per specificare più compartimenti, utilizzare istruzioni separate:
    Allow group InstanceAdmins to manage instance-family in compartment Project-A
    
    Allow group InstanceAdmins to manage instance-family in compartment Project-B
    
    
  • Per specificare più compartimenti per OCID, utilizzare istruzioni separate:
    Allow group id ocd1.group.oc1..aaaaaaaavheexampleocid to manage all-resources in compartment id ocid1.compartment.oc1..aaaaaaaayzexampleocid
    
    Allow group id ocd1.group.oc1..aaaaaaaaexampleocid to manage all-resources in compartment id ocid1.compartment.oc1..aaaaaexampledocid
  • Per specificare un compartimento che non sia un elemento figlio diretto del compartimento in cui si collega il criterio, specificare il percorso:

    Allow group InstanceAdmins to manage instance-family in compartment Project-A:Project-A2

Condizioni

Specificare una o più condizioni. Utilizzare any o all con più condizioni per un OR logico o AND, rispettivamente.

Sintassi per una singola condizione: variable =|!= value

Sintassi per più condizioni: any|all {<condition>,<condition>,...}

È possibile utilizzare operatori aggiuntivi con variabili basate sul tempo. Vedere Limitazione dell'accesso alle risorse in base all'intervallo di tempo.

Importante

La corrispondenza delle condizioni non fa distinzione tra maiuscole e minuscole. Ciò è importante da ricordare quando si scrivono le condizioni per i tipi di risorsa che consentono la distinzione tra maiuscole e minuscole nella denominazione. Ad esempio, il servizio di storage degli oggetti consente di creare sia un bucket denominato "BucketA" che un bucket denominato "bucketA" nello stesso compartimento. Se si scrive una condizione che specifica "BucketA", verrà applicata anche a "bucketA", poiché la corrispondenza delle condizioni non fa distinzione tra maiuscole e minuscole.

Per un elenco delle variabili supportate da tutti i servizi, vedere Variabili generali per tutte le richieste. Inoltre, vedere i dettagli per ciascun servizio in Panoramica dei criteri IAM. Di seguito sono riportati i tipi di valori che è possibile utilizzare nelle condizioni.

Tipo Esempi
Stringa

'johnsmith@example.com'

'ocid1.compartment.oc1..aaaaaaaaph...ctehnqg756a'

(sono necessarie virgolette singole intorno al valore)

Pattern

/HR*/ (corrisponde alle stringhe che iniziano con "HR")

/*HR/ (corrisponde alle stringhe che terminano con "HR")

/*HR*/ (corrisponde alle stringhe che contengono "HR")

Esempi:

Nota

Negli esempi seguenti, le istruzioni che specificano la condizione non consentono a GroupAdmins di elencare effettivamente tutti gli utenti e i gruppi, pertanto le istruzioni che includono il verbo inspect vengono aggiunte per completezza. Per comprendere il motivo di questa esigenza, vedere Variabili non applicabili a un risultato di richiesta in una richiesta rifiutata.
  • Una sola condizione.

    Il seguente criterio consente al gruppo GroupAdmins di creare, aggiornare o eliminare i gruppi con nomi che iniziano con "A-Users-":

    Allow group GroupAdmins to manage groups in tenancy where target.group.name = /A-Users-*/
    Allow group GroupAdmins to inspect groups in tenancy
    Il criterio seguente consente al gruppo NetworkAdmins di gestire le reti cloud in qualsiasi compartimento ad eccezione di quello specificato:
    Allow group NetworkAdmins to manage virtual-network-family in tenancy where target.compartment.id != 'ocid1.compartment.oc1..aaaaaaaaexampleocid'
  • Condizioni multiple.

    Il seguente criterio consente a GroupAdmins di creare, aggiornare o eliminare i gruppi i cui nomi iniziano con "A-", ad eccezione del gruppo A-Admins stesso:

    Allow group GroupAdmins to manage groups in tenancy where all {target.group.name=/A-*/,target.group.name!='A-Admins'}
     
    Allow group GroupAdmins to inspect groups in tenancy