Autenticarsi con i service account

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

  1. Accedi alla console GDC.
  2. Nel menu di navigazione, seleziona Identity & Access > Service identities.
  3. Fai clic su Crea identità di servizio. Viene visualizzata la pagina Dettagli identità di servizio.
  4. Nel campo Nome identità di servizio, inserisci un nome per l'identità di servizio. Ad esempio: testserviceidentity.
  5. 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

  1. Crea un file YAML della risorsa personalizzata ProjectServiceAccount, ad esempio my-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 risorsa ProjectServiceAccount. 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 esempio 2025-02-07T00:59:34Z.
    • EXPIRATION_TIME: la data di scadenza della chiave, ad esempio 2026-02-07T00:59:34Z.
  2. 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

  1. Accedi alla console GDC.
  2. Seleziona un progetto.
  3. 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

  1. Accedi alla console GDC.
  2. Seleziona un progetto.
  3. Nel menu di navigazione, seleziona Identity & Access > Accesso.
  4. Nell'elenco Membro, fai clic su Aggiungi membro. Viene visualizzata la pagina Utenti e ruoli.
  5. Seleziona Identità servizio nell'elenco Tipo di membro.
  6. Nell'elenco Identità del servizio, seleziona l'identità del servizio a cui vuoi assegnare un binding del ruolo.
  7. Nell'elenco Ruolo, seleziona il ruolo che vuoi assegnare all'identità di servizio, ad esempio Backup Creator.
  8. (Facoltativo) Per aggiungere un altro ruolo, fai clic su Aggiungi un altro ruolo. Seleziona il ruolo aggiuntivo.
  9. 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 formato Role/name, dove Role è il tipo Kubernetes IAMRole e name è il nome del ruolo predefinito. Ad esempio, per assegnare il ruolo Visualizzatore progetto, imposta il ruolo su IAMRole/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

  1. Accedi alla console GDC.
  2. Nel menu di navigazione, seleziona Identità e accesso > Identità del servizio.
  3. Seleziona la casella di controllo dell'identità del servizio che vuoi eliminare.
  4. Fai clic su Elimina.
  5. Viene visualizzata la finestra di dialogo di conferma. Nel campo Conferma digitando quanto segue di seguito, inserisci remove.
  6. 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

  1. Accedi alla console GDC.
  2. Nel menu di navigazione, seleziona Identità e accesso > Identità del servizio.
  3. Fai clic sul nome dell'identità del servizio che vuoi aggiungere alla chiave.
  4. Fai clic su Crea nuova chiave.
  5. 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

  1. Accedi alla console GDC.
  2. Nel menu di navigazione, seleziona Identità e accesso > Identità del servizio.
  3. Fai clic sul nome dell'identità del servizio che contiene la chiave che vuoi eliminare.
  4. Fai clic su Elimina.
  5. 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