I service account sono gli account utilizzati dai carichi di lavoro o dai servizi per utilizzare le risorse in modo programmatico e accedere ai microservizi in modo sicuro. Si tratta di un tipo speciale di identità utilizzata da un'applicazione o da un workload anziché da una persona. Analogamente a un account utente, ai service account possono essere concessi permessi e ruoli, ma non possono accedere come un utente umano.
I service account sono utili per gestire l'infrastruttura air-gapped di Google Distributed Cloud (GDC), ad esempio:
- Servizi e carichi di lavoro Distributed Cloud interni per accedere in modo sicuro all'interfaccia di programmazione delle applicazioni (API) del piano di controllo Distributed Cloud. Ad esempio, i servizi di database interagiscono con le API Kubernetes per creare ed eliminare database.
- Carichi di lavoro dei clienti in Distributed Cloud per accedere ai servizi Distributed Cloud ed effettuare chiamate API (Application Programming Interface) autorizzate. Ad esempio, i service account possono gestire un cliente utilizzando un blocco note Vertex AI Workbench per trascrivere file audio utilizzando l'API Speech-to-Text.
- Workload esterni da federare con Distributed Cloud. Ad esempio, i service account possono gestire un'applicazione esterna a Distributed Cloud che digitalizza i documenti, ma vuole utilizzare l'API Optical Character Recognition (OCR) per sostituire il motore OCR attuale.
- Servizi cloud distribuiti o controller di sistema per accedere in modo sicuro alle risorse dei clienti o ai cluster utente. Ad esempio, i service account possono gestire i flussi di lavoro di autenticazione e autorizzazione in cui i controller di servizio in esecuzione nei cluster di amministrazione devono eseguire carichi di lavoro all'interno dei cluster utente gestiti dai clienti.
Puoi gestire gli account utilizzando la console GDC o
l'interfaccia a riga di comando gcloud. Con gcloud CLI, la funzionalità di identità del servizio si basa sull'API ProjectServiceAccount
globale. Poiché
gli account di servizio sono configurati a livello globale, operano in tutte le zone del tuo
universo gdcloud.
Prima di iniziare
Puoi creare service account solo all'interno di un progetto. Per saperne di più sulla creazione di un progetto, consulta Creare un progetto.
Crea un'identità del servizio
Per ottenere le autorizzazioni necessarie per creare service account, chiedi all'amministratore IAM del progetto di concederti il ruolo Amministratore IAM del progetto (project-iam-admin
).
Gli utenti con accesso agli account di servizio possono accedere a tutti gli account di servizio all'interno di un progetto.
Per creare service account in un progetto, utilizza la console GDC o gcloud CLI.
Console
- Accedi alla console GDC.
- Nel menu di navigazione, seleziona Identity & Access > Service identities.
- Fai clic su Crea identità di servizio. Viene visualizzata la pagina Dettagli identità di servizio.
- Nel campo Nome identità di servizio, inserisci un nome per l'identità di servizio. Ad esempio:
testserviceidentity
. - Fai clic su Crea.
gdcloud
Crea un'identità del servizio:
gdcloud iam service-accounts create NAME \
--project=PROJECT
Sostituisci i seguenti valori:
- NAME: il nome di
ProjectServiceAccount
. Il nome deve essere univoco all'interno dello spazio dei nomi del progetto. - PROJECT: il progetto in cui creare l'identità
del servizio. Se
gdcloud init
è già impostato, ometti il flag--project
.
Questo comando crea un ProjectServiceAccount
nello spazio dei nomi del progetto sul server dell'API Management.
API
Crea un file YAML della risorsa personalizzata
ProjectServiceAccount
, ad esempiomy-project-sa.yaml
:apiVersion: resourcemanager.global.gdc.goog/v1 kind: ProjectServiceAccount metadata: name: NAME namespace: PROJECT spec: keys: - algorithm: ALGORITHM id: KEY_ID key: KEY validAfter: "START_TIME" validBefore: "EXPIRATION_TIME"
Sostituisci le seguenti variabili:
NAME
: il nome della risorsaProjectServiceAccount
. Il nome deve essere univoco all'interno dello spazio dei nomi del progetto.PROJECT
: il progetto in cui creare l'identità del servizio.ALGORITHM
: l'algoritmo della chiave. Sono supportate solo le chiavi ES256.KEY_ID
: l'identificatore univoco della chiave. L'ID viene utilizzato per determinare la chiave da verificare.KEY
: la chiave pubblica con codifica Base64 da verificare.START_TIME
: l'ora di inizio in cui la chiave diventa valida, ad esempio2025-02-07T00:59:34Z
.EXPIRATION_TIME
: la data di scadenza della chiave, ad esempio2026-02-07T00:59:34Z
.
Applica la risorsa personalizzata
ProjectServiceAccount
al server API globale:kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f my-project-sa.yaml
Sostituisci la variabile
GLOBAL_API_SERVER_KUBECONFIG
con il percorso del file kubeconfig per il server API globale.
Visualizzare le identità del servizio
Per visualizzare un elenco di service account in un progetto, utilizza la console GDC o gcloud CLI.
Console
- Accedi alla console GDC.
- Seleziona un progetto.
- Nel menu di navigazione, fai clic su Identity & Access > Service Identities per visualizzare l'elenco degli account di servizio per il progetto.
gdcloud
Elenca i service account in un progetto:
gdcloud iam service-accounts list \
--project=PROJECT
Assegnare un binding del ruolo all'identità del servizio
Per assegnare un'associazione di ruolo, devi disporre delle autorizzazioni appropriate. Per ottenere le autorizzazioni necessarie per assegnare i ruoli, chiedi all'amministratore IAM del progetto di concederti il ruolo Amministratore IAM del progetto (project-iam-admin
).
Utilizza la console GDC o gcloud CLI per assegnare un'associazione di ruoli.
Console
- Accedi alla console GDC.
- Seleziona un progetto.
- Nel menu di navigazione, seleziona Identity & Access > Accesso.
- Nell'elenco Membro, fai clic su Aggiungi membro. Viene visualizzata la pagina Utenti e ruoli.
- Seleziona Identità servizio nell'elenco Tipo di membro.
- Nell'elenco Identità del servizio, seleziona l'identità del servizio a cui vuoi assegnare un binding del ruolo.
- Nell'elenco Ruolo, seleziona il ruolo che vuoi assegnare all'identità di servizio, ad esempio Backup Creator.
- (Facoltativo) Per aggiungere un altro ruolo, fai clic su Aggiungi un altro ruolo. Seleziona il ruolo aggiuntivo.
- Fai clic su Aggiungi.
gdcloud
Questo comando crea e assegna un nome al binding del ruolo del progetto per associare il ruolo specificato a ProjectServiceAccount
sul server API Management:
gdcloud iam service-accounts add-iam-policy-binding \
--project=PROJECT \
--role=ROLE \
--role-namespace=ROLE_NAMESPACE \
--iam-account=NAME
Sostituisci i seguenti valori:
- PROJECT: il progetto in cui creare l'associazione di ruolo.
Se
gdcloud init
è già impostato, puoi omettere il flag--project
. - ROLE: il ruolo predefinito da assegnare a
ProjectServiceAccount
. Specifica i ruoli nel formatoRole/name
, dove Role è il tipo KubernetesIAMRole
e name è il nome del ruolo predefinito. Ad esempio, per assegnare il ruolo Visualizzatore progetto, imposta il ruolo suIAMRole/project-viewer
. - ROLE_NAMESPACE: lo spazio dei nomi del ruolo da associare al account di servizio. Questo vale solo se il tuo universo ha più zone.
- NAME: il nome dell'identità di servizio da utilizzare.
Eliminare un'identità del servizio
Per eliminare i service account in un progetto, utilizza la console GDC o gcloud CLI.
Console
- Accedi alla console GDC.
- Nel menu di navigazione, seleziona Identità e accesso > Identità del servizio.
- Seleziona la casella di controllo dell'identità del servizio che vuoi eliminare.
- Fai clic su Elimina.
- Viene visualizzata la finestra di dialogo di conferma. Nel campo Conferma digitando
quanto segue di seguito, inserisci
remove
. - Fai clic su Elimina.
gdcloud
Esegui questo comando per eliminare un'identità di servizio:
gdcloud iam service-accounts delete NAME \
--project=PROJECT
Creare e aggiungere coppie di chiavi
Per creare e aggiungere coppie di chiavi in un progetto, utilizza la console GDC o gcloud CLI.
Console
- Accedi alla console GDC.
- Nel menu di navigazione, seleziona Identità e accesso > Identità del servizio.
- Fai clic sul nome dell'identità del servizio che vuoi aggiungere alla chiave.
- Fai clic su Crea nuova chiave.
- La nuova chiave viene visualizzata nell'elenco Chiavi e una finestra di dialogo conferma che la chiave è stata creata correttamente.
gdcloud
Questo comando crea il file JSON delle credenziali predefinite dell'applicazione e le coppie di chiavi pubblica e privata:
gdcloud iam service-accounts keys create APPLICATION_DEFAULT_CREDENTIALS_FILENAME \
--project=PROJECT \
--iam-account=NAME \
--ca-cert-path=CA_CERTIFICATE_PATH
Sostituisci i seguenti valori:
- APPLICATION_DEFAULT_CREDENTIALS_FILENAME: il nome del file JSON.
- PROJECT : seleziona il progetto per cui creare la chiave.
Se
gdcloud init
è già impostato, puoi omettere il flag--project
. - NAME: il nome dell'identità di servizio a cui aggiungere la chiave.
- CA_CERTIFICATE_PATH: (facoltativo) il percorso del certificato dell'autorità di certificazione (CA) per verificare l'endpoint di autenticazione. Se non specifichi questo percorso, vengono utilizzati i certificati CA di sistema. Devi installare la CA nei certificati CA del sistema.
Distributed Cloud aggiunge la chiave pubblica alle ProjectServiceAccount
chiavi che utilizzi per verificare i token web JSON (JWT) firmati dalla chiave privata. La chiave privata viene scritta nel file JSON delle credenziali predefinite dell'applicazione.
L'esempio seguente mostra il file JSON delle credenziali predefinite dell'applicazione:
{
"type": "gdch_service_account",
"format_version": "1",
"project": "project_name",
"private_key_id": "abcdef1234567890",
"private_key": "-----BEGIN RSA PRIVATE KEY-----\nETC\n-----END RSA PRIVATE KEY-----\n",
"name": "service_identity_name",
"ca_cert_path": "service_identity_name",
"token_uri": "https://service-identity.<Domain>/authenticate"
}
Questo esempio utilizza i seguenti valori:
project
: lo spazio dei nomi del progetto nell'organizzazione.private_key_id
: l'ID assegnato alla chiave.private_key
: la chiave privata generata dalla CLI.name
: il nome dell'identità del servizio.token_uri
: l'indirizzo dell'endpoint di autenticazione.
Elenca le credenziali per i service account
Elenca le chiavi pubbliche di un ProjectServiceAccount
specifico nel progetto:
gdcloud iam service-accounts keys list \
--project=PROJECT \
--iam-account=NAME
Elimina credenziali
Per eliminare la chiave pubblica, utilizza la console GDC o gcloud CLI.
Console
- Accedi alla console GDC.
- Nel menu di navigazione, seleziona Identità e accesso > Identità del servizio.
- Fai clic sul nome dell'identità del servizio che contiene la chiave che vuoi eliminare.
- Fai clic su Elimina.
- Nella finestra di dialogo di conferma, fai clic su Elimina.
gdcloud
Rimuovi la chiave pubblica con l'ID chiave dal ProjectServiceAccount
specifico
nel progetto:
gdcloud iam service-accounts keys delete KEY_ID \
--project=PROJECT \
--iam-account=NAME