Chiamata dei servizi da un'istanza
Questo argomento descrive come autorizzare le istanze a chiamare i servizi in Oracle Cloud Infrastructure.
Introduzione
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 ti 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 di questi gruppi di effettuare chiamate API sui servizi Oracle Cloud Infrastructure. L'appartenenza al gruppo è determinata da una serie di criteri definiti, denominati regole di corrispondenza.
- REGOLA DI CORRISPONDENZA
- Quando si imposta un gruppo dinamico, vengono definite anche 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 si segue. Vedere Scrittura di regole di corrispondenza per definire i gruppi dinamici.
- PRINCIPI ISTANZA
- Funzione del servizio IAM che consente agli attori (o principal) autorizzati delle istanze di eseguire azioni sulle risorse del servizio. Ogni istanza di computazione dispone di una propria identità ed esegue l'autenticazione utilizzando i certificati aggiunti. Questi certificati vengono creati automaticamente, assegnati alle istanze e ruotati, evitando che sia necessario distribuire le credenziali agli host e ruotarle.
considerazioni sulla sicurezza
Qualsiasi utente che dispone dell'accesso all'istanza (che può eseguire l'accesso SSH all'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 che siano autorizzati con le autorizzazioni concesse all'istanza.
A tutti i principal dell'istanza di computazione viene concessa l'autorizzazione compartment_inspect
. Non è possibile 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
- Valori predefiniti tag automatici applicati ai compartimenti. Queste tag, ad esempio CreatedBy e CreatedOn, si trovano nello spazio di nomi Oracle-Tag e vengono aggiunte automaticamente da Oracle.
Panoramica processo
I passi seguenti riepilogano il flusso del processo per l'impostazione e l'utilizzo delle istanze come principal. Nelle sezioni successive vengono forniti ulteriori dettagli.
-
Crea un gruppo dinamico. Nella definizione del gruppo dinamico, fornire le regole di corrispondenza per specificare le istanze che si desidera consentire per effettuare chiamate API sui servizi.
-
Creare un criterio che conceda le autorizzazioni al gruppo dinamico per accedere ai servizi nella tenancy (o nel compartimento).
-
Uno sviluppatore dell'organizzazione configura l'applicazione creata utilizzando l'SDK di Oracle Cloud Infrastructure per l'autenticazione utilizzando il provider dei 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 eseguita da un'istanza, il servizio di audit registra l'evento, registrando l'OCID dell'istanza come valore
principalId
nel log eventi. Per ulteriori informazioni, vedere Contenuto di un evento del log di controllo.
Passi per abilitare le istanze per chiamare i servizi
Eseguire i task riportati di seguito per abilitare un'istanza per chiamare i servizi.
Creazione di un gruppo dinamico e di 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 nella sezione Funzionamento dei criteri. Rivedere l'argomento per comprendere le funzioni di base dei criteri.
La sintassi per consentire a un gruppo dinamico di accedere alle risorse in un compartimento è la seguente:
Allow dynamic-group <dynamic_group_name> to <verb> <resource-type> in compartment <compartment_name>
La sintassi per consentire a un gruppo dinamico di accedere a una tenancy è la seguente:
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 le 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 dell'SDK, dell'interfaccia CLI o di Terraform
Per informazioni sugli SDK, vedere Software Development Kits and Command Line Interface.
Per l'SDK per Java:
Creare un oggetto InstancePrincipalsAuthenticationDetailsProvider
nell'SDK per Java. 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:
Nel kit 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_principal
In alternativa, è possibile impostare la variabile di ambiente seguente:
OCI_CLI_AUTH=instance_principal
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 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}"
}
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.
- 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. Dipende anche dall'applicazione con cui stai interagendo. Ad esempio, se lo storage degli oggetti non dispone di un'operazione PUT multiparte, non importa per quanto tempo viene eseguita l'operazione.
Sì. Assicurarsi che l'accesso all'istanza sia consentito solo agli utenti ai quali è stato concesso l'accesso al gruppo dinamico.
Sì. È possibile rimuoverla modificando la regola di corrispondenza per escluderla. Per un esempio, vedere di seguito.
Sì. Ad esempio, si supponga 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 precedente include tutte le istanze nel compartimento ad eccezione di quelle con gli OCID specificati.