Chiamata di servizi da un'istanza
Questo argomento descrive come autorizzare le istanze a chiamare i servizi in Oracle Cloud Infrastructure.
Introduction
Questa procedura descrive come autorizzare un'istanza a effettuare chiamate API nei servizi Oracle Cloud Infrastructure. Dopo aver impostato le risorse e i criteri necessari, un'applicazione in esecuzione su un'istanza può chiamare i servizi pubblici di Oracle Cloud Infrastructure, eliminando la necessità di configurare le credenziali utente o un file di configurazione.
Concetti
- GRUPPO DINAMICO
- I gruppi dinamici consentono di raggruppare le istanze di Oracle Cloud Infrastructure come attori principali, simili ai gruppi di utenti. È quindi possibile creare criteri per consentire alle istanze in questi gruppi di effettuare chiamate API sui servizi Oracle Cloud Infrastructure. L'appartenenza al gruppo è determinata da un set di criteri definiti, denominati regole di corrispondenza.
- REGOLA DI CORRISPONDENZA
- Quando si imposta un gruppo dinamico, è inoltre possibile definire le regole per l'appartenenza al gruppo. Le risorse che corrispondono ai criteri della regola sono membri del gruppo dinamico. Le regole di corrispondenza hanno una sintassi specifica che segui. Vedere Scrittura di regole di corrispondenza per definire i gruppi dinamici.
- PRINCIPI ISTANZA
- Funzione del servizio IAM che consente alle istanze di essere attori (o principal) autorizzati a eseguire azioni sulle risorse del servizio. Ogni istanza di computazione ha la propria identità e viene autenticata utilizzando i certificati aggiunti. Questi certificati vengono creati automaticamente, assegnati alle istanze e ruotati, evitando di dover distribuire le credenziali agli host e ruotarle.
Considerazioni sulla sicurezza
Qualsiasi utente che ha accesso all'istanza (che può eseguire SSH sull'istanza) eredita automaticamente i privilegi concessi all'istanza. Prima di concedere le autorizzazioni a un'istanza utilizzando questa procedura, assicurarsi di sapere chi può accedervi e di essere autorizzati con le autorizzazioni che si stanno concedendo all'istanza.
A tutti i principal delle istanze di computazione viene concessa l'autorizzazione compartment_inspect. Impossibile revocare questa autorizzazione. Questa autorizzazione consente all'istanza di ListCompartments nella tenancy di recuperare le informazioni riportate di seguito.
- Nomi compartimento
- Descrizioni compartimento
- Tag in formato libero applicate ai compartimenti
- Impostazioni predefinite dei tag automatici applicate ai compartimenti. Questi tag, ad esempio CreatedBy e CreatedOn, si trovano nello spazio di nomi Oracle-Tag e vengono aggiunti automaticamente da Oracle.
Panoramica processo
I passi riportati di seguito riepilogano il flusso di processo per l'impostazione e l'utilizzo delle istanze come principal. Nelle sezioni successive vengono forniti ulteriori dettagli.
-
Creare un gruppo dinamico. Nella definizione del gruppo dinamico, fornire le regole di corrispondenza per specificare le istanze che si desidera consentire di effettuare chiamate API ai servizi.
-
Creare un criterio che conceda le autorizzazioni al gruppo dinamico per accedere ai servizi nella tenancy (o nel compartimento).
-
Uno sviluppatore nella tua organizzazione configura l'applicazione creata utilizzando Oracle Cloud Infrastructure SDK per l'autenticazione utilizzando il provider di principal dell'istanza. Lo sviluppatore distribuisce l'applicazione e l'SDK a tutte le istanze appartenenti al gruppo dinamico.
-
L'SDK distribuito effettua chiamate alle API Oracle Cloud Infrastructure come consentito dal criterio (senza dover configurare le credenziali API).
-
Per ogni chiamata API effettuata da un'istanza, il servizio di audit registra l'evento, registrando l'OCID dell'istanza come valore
principalIdnel log eventi. Per ulteriori informazioni, vedere Contenuto di un evento del log di audit.
Passi per abilitare le istanze per chiamare i servizi
Eseguire i task riportati di seguito per consentire a un'istanza di chiamare i servizi.
Creare un gruppo dinamico e regole di corrispondenza
Creazione di un gruppo dinamico e di regole di corrispondenza
Vedere Gestione dei gruppi dinamici.
Scrittura dei criteri per i gruppi dinamici
Dopo aver creato un gruppo dinamico, è necessario creare criteri per consentire ai gruppi dinamici di accedere ai servizi Oracle Cloud Infrastructure.
Il criterio per i gruppi dinamici segue la sintassi descritta in Funzionamento dei criteri. Rivedere l'argomento per comprendere le funzioni dei criteri di base.
Di seguito è riportata la sintassi per consentire a un gruppo dinamico di accedere alle risorse in un compartimento.
Allow dynamic-group <dynamic_group_name> to <verb> <resource-type> in compartment <compartment_name>
Di seguito è riportata la sintassi per consentire l'accesso di un gruppo dinamico a una tenancy.
Allow dynamic-group <dynamic_group_name> to <verb> <resource-type> in tenancy
Di seguito sono riportati alcuni criteri di esempio.
Per consentire a un gruppo dinamico (FrontEnd) di utilizzare un load balancer in un compartimento specifico (ProjectA):
Allow dynamic-group FrontEnd to use load-balancers in compartment ProjectA
Per consentire a un gruppo dinamico di avviare istanze in un compartimento specifico, effettuare le operazioni riportate di seguito.
Allow dynamic-group FrontEnd to manage instance-family in compartment ProjectA
Allow dynamic-group FrontEnd to use volume-family in compartment ProjectA
Allow dynamic-group FrontEnd to use virtual-network-family in compartment ProjectA
Per ulteriori criteri di esempio, vedere Criteri comuni.
Configurazione di SDK, CLI o Terraform
Per informazioni sugli SDK, vedere Software Development Kit and Command Line Interface (interfaccia a riga di comando e kit di sviluppo software).
Per l'SDK per Java:
Nell'SDK per Java creare un oggetto InstancePrincipalsAuthenticationDetailsProvider. Ad esempio:
public static void main(String[] args) throws Exception {
InstancePrincipalsAuthenticationDetailsProvider provider =
InstancePrincipalsAuthenticationDetailsProvider.builder().build();
IdentityClient identityClient = new IdentityClient(provider);
...Per l'SDK per Python:
Nell'SDK per Python creare un oggetto oci.auth.signers.InstancePrincipalsSecurityTokenSigner. Ad esempio:
# By default this will hit the auth service in the region returned by http://169.254.169.254/opc/v1/instance/region on the instance.
signer = oci.auth.signers.InstancePrincipalsSecurityTokenSigner()
identity_client = oci.identity.IdentityClient(config={}, signer=signer)
...Per aggiornare il token senza attendere, utilizzare il comando seguente:
signer.refresh_security_token()
Abilitazione dell'autorizzazione principal dell'istanza per l'interfaccia CLI
Per abilitare l'autorizzazione del principal dell'istanza dalla CLI, è possibile impostare l'opzione di autorizzazione (--auth) per un comando. Ad esempio:
oci os ns get --auth instance_principalIn alternativa, è possibile impostare la variabile d'ambiente seguente:
OCI_CLI_AUTH=instance_principal
Si noti che se entrambi sono impostati, il valore impostato per --auth ha la precedenza sulla variabile di ambiente.
Per informazioni sull'uso dell'interfaccia CLI, vedere Working with the Command Line Interface.
Abilitazione dell'autorizzazione del principal dell'istanza per Terraform
Per abilitare l'autorizzazione del principal dell'istanza in Terraform, è possibile impostare l'attributo auth su "InstancePrincipal" nella definizione del provider come mostrato nell'esempio riportato di seguito.
variable "region" {}
provider "oci" {
auth = "InstancePrincipal"
region = "${var.region}"
}
Tenere presente che quando si utilizza l'autorizzazione principal dell'istanza, non è necessario includere gli attributi tenancy_ocid, user_ocid, fingerprint e private_key_path.
Domande frequenti
Utilizzare questo comando curl: curl http://169.254.169.254/opc/v1/identity/cert.pem
Il certificato viene ruotato più volte al giorno.
- Provare a eseguire di nuovo il comando. A volte la rotazione del certificato e la richiesta si verificano contemporaneamente.
- Il certificato potrebbe essere scaduto. Verificare che il certificato sia valido.
N. Impossibile modificare la frequenza di rotazione del certificato. Tuttavia, è possibile modificare il criterio nel gruppo dinamico. Se si ritiene che un'istanza sia stata compromessa, è possibile modificare il criterio nel gruppo dinamico per revocare le autorizzazioni per tutti i membri del gruppo oppure rimuovere l'istanza dal gruppo dinamico. Vedere È possibile rimuovere un'istanza da un gruppo dinamico?
La scadenza del token è indipendente dal periodo di scadenza del certificato. Inoltre, dipende anche dall'applicazione con cui interagisci. Ad esempio, se lo storage degli oggetti non dispone di un'operazione PUT multiparte, non importa per quanto tempo l'operazione viene eseguita.
Sì Assicurarsi che solo gli utenti a cui deve essere concesso l'accesso concesso al gruppo dinamico abbiano accesso all'istanza.
Sì È possibile rimuoverla modificando la regola di corrispondenza per escluderla. Per un esempio, vedere di seguito.
Sì Si supponga, ad esempio, di voler escludere due istanze specifiche in un compartimento dal gruppo dinamico. Scrivere una regola di corrispondenza come questa:
All {instance.compartment.id = '<compartment_ocid>',
instance.id != '<instance1_to_exclude_ocid>', instance.id != '<instance2_to_exclude_ocid>'}
La regola sopra riportata include tutte le istanze nel compartimento ad eccezione di quelle con gli OCID specificati.