Scarica la configurazione delle credenziali e concedi l'accesso

Questa pagina descrive come configurare i carichi di lavoro per accedere a Google Cloud mediante la federazione delle identità per i carichi di lavoro e le risorse dirette o il furto d'identità degli account di servizio.

Puoi trovare istruzioni end-to-end specifiche per i casi d'uso nelle guide alla configurazione per AWS e Azure, Active Directory, GitHub, GitLab e altre pipeline di deployment e Kubernetes.

Consenti al carico di lavoro esterno di accedere alle risorse Google Cloud

Per fornire al tuo carico di lavoro l'accesso alle risorse Google Cloud, consigliamo di concedere l'accesso diretto alle risorse al principale. In questo caso, l'entità è l'utente federato. Alcuni prodotti Google Cloud presentano limitazioni delle API Google Cloud. Se il carico di lavoro chiama un endpoint API con una limitazione, puoi scegliere la simulazione dell'identità degli account di servizio. In questo caso, l'entità è Account di servizio Google Cloud, che funge da identità. Concedi l'accesso all'account di servizio nella risorsa.

Accesso diretto alle risorse

Puoi concedere l'accesso a un'identità federata direttamente sulle risorse utilizzando la console Google Cloud o gcloud CLI.

Console

Utilizzare la console Google Cloud per concedere i ruoli IAM direttamente su una risorsa, devi andare alla pagina della risorsa concedere il ruolo. L'esempio seguente mostra come procedere alla pagina Cloud Storage e concedi il ruolo Visualizzatore oggetti Storage (roles/storage.objectViewer) a un'identità federata direttamente su un nel bucket Cloud Storage.

  1. Nella console Google Cloud, vai alla pagina Bucket di Cloud Storage.

    Vai a Bucket

  2. Nell'elenco dei bucket, fai clic sul nome del bucket per cui vuoi concedere il ruolo.

  3. Seleziona la scheda Autorizzazioni nella parte superiore della pagina.

  4. Fai clic sulla Pulsante Concedi l'accesso.

    Viene visualizzata la finestra di dialogo Aggiungi entità.

  5. Nel campo Nuove entità, inserisci una o più identità che devono accedere al tuo bucket.

    Per argomento

    principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT
    

    Sostituisci quanto segue:

    • PROJECT_NUMBER: il progetto numero
    • POOL_ID: l'ID del pool di carichi di lavoro
    • SUBJECT: la persona soggetto mappato dal tuo IdP, ad esempio administrator@example.com

    Per gruppo

    principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP
    

    Sostituisci quanto segue:

    • PROJECT_NUMBER: il numero del progetto
    • WORKLOAD_POOL_ID: l'ID del pool di carichi di lavoro
    • GROUP: il gruppo mappata dal tuo IdP, ad esempio: administrator-group@example.com

    Per attributo

    principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE
    

    Sostituisci quanto segue:

    • PROJECT_NUMBER: il numero del progetto
    • WORKLOAD_POOL_ID: carico di lavoro ID pool
    • ATTRIBUTE_NAME: uno dei che sono stati mappati dall'IdP
    • ATTRIBUTE_VALUE: il valore dell'attributo
  6. Seleziona un ruolo o più ruoli dal menu a discesa Seleziona un ruolo. I ruoli selezionati vengono visualizzati nel riquadro con una breve descrizione delle autorizzazioni concesse.

  7. Fai clic su Salva.

gcloud

Per utilizzare gcloud CLI per concedere i ruoli IAM a una risorsa in un progetto, segui questi passaggi:

  1. Ottieni il numero del progetto in cui è definita la risorsa.

    gcloud projects describe $(gcloud config get-value core/project) --format=value\(projectNumber\)
    
  2. Concedi l'accesso alla risorsa.

    Per utilizzare gcloud CLI per concedere il ruolo Visualizzatore oggetti Storage (roles/storage.objectViewer) a identità esterne che soddisfano determinati criteri, esegui il seguente comando.

    Per soggetto

    gcloud storage buckets add-iam-policy-binding BUCKET_ID \
        --role=roles/storage.objectViewer \
        --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT"

    Per gruppo

    gcloud storage buckets add-iam-policy-binding BUCKET_ID \
        --role=roles/storage.objectViewer \
        --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP"

    Per attributo

    gcloud storage buckets add-iam-policy-binding BUCKET_ID \
        --role=roles/storage.objectViewer \
        --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE"

    Sostituisci quanto segue:

    • BUCKET_ID: il bucket a cui concedere l'accesso
    • PROJECT_NUMBER: il numero di progetto del progetto che contiene il pool di identità per i carichi di lavoro
    • POOL_ID: l'ID del pool di identità per i carichi di lavoro
    • SUBJECT: il valore previsto per l'attributo che che hai mappato a google.subject
    • GROUP: il valore previsto per l'attributo che hai mappato a google.groups
    • ATTRIBUTE_NAME: il nome di un attributo personalizzato in la mappatura degli attributi
    • ATTRIBUTE_VALUE: il valore dell'attributo personalizzato nella mappatura degli attributi

    Puoi concedere ruoli a qualsiasi risorsa Google Cloud che supporta i criteri di autorizzazione IAM.

Rappresentazione dell'identità dell'account di servizio

  1. Per creare un account di servizio per il carico di lavoro esterno:

    1. Enable the IAM, Security Token Service, and Service Account Credentials APIs.

      Enable the APIs

    2. Crea un account di servizio che rappresenta il carico di lavoro. Ti consigliamo di utilizzare un account di servizio dedicato per ogni carico di lavoro. L'account di servizio non deve necessariamente trovarsi nello stesso progetto del pool di identità del carico di lavoro, ma devi fare riferimento al progetto che contiene l'account di servizio.

    3. Concedi all'account di servizio l'accesso alle risorse a cui vuoi che accedano le identità esterne.

    4. Concedi il ruolo Utente Workload Identity (roles/iam.workloadIdentityUser) all'account di servizio.

  2. Per concedere l'accesso a un'identità federata utilizzando la simulazione dell'identità degli account di servizio tramite la console Google Cloud o gcloud CLI:

Console

Utilizzare la console Google Cloud per concedere i ruoli IAM a un'identità federata con un account di servizio, segui questi passaggi:

Account di servizio nello stesso progetto

  1. Per concedere l'accesso utilizzando la simulazione dell'identità degli account di servizio per un nello stesso progetto, segui questi passaggi:

    1. Vai alla pagina Pool di identità per carichi di lavoro.

      Vai ai pool di identità per i carichi di lavoro

    2. Seleziona Concedi l'accesso.

    3. Nella finestra di dialogo Concedi l'accesso all'account di servizio, seleziona Concedi l'accesso utilizzando la simulazione dell'identità degli account di servizio.

    4. Nell'elenco Account di servizio, seleziona l'account di servizio per le identità esterne da rubare e svolgi i seguenti passaggi:

    5. Per scegliere quali identità nel pool possono rubare l'identità dell'account servizio, esegui una delle seguenti azioni:

      • Per consentire solo a identità specifiche del pool di identità del carico di lavoro di simulare l'identità dell'account di servizio, seleziona Solo le identità corrispondenti al filtro.

      • Nell'elenco Nome attributo, seleziona l'attributo. in base alle quali vuoi applicare un filtro.

      • Nel campo Valore attributo, inserisci il valore previsto dell'attributo. Ad esempio, se utilizzi una mappatura degli attributi google.subject=assertion.sub, imposta il nome dell'attributo su subject e il valore dell'attributo sul valore dell'affermazione sub nei token emessi dal tuo provider di identità esterno.

    6. Per salvare la configurazione, fai clic su Salva e poi su Ignora.

Account di servizio in un altro progetto

  1. Per concedere l'accesso utilizzando la rappresentazione dell'account di servizio per un account di servizio in un progetto diverso:

    1. Vai alla pagina Service Accounts.

      Vai a Service account

    2. Seleziona l'account di servizio che vuoi impersonare.

    3. Fai clic su Gestisci accesso.

    4. Fai clic su Aggiungi entità.

    5. Nel campo Nuova entità, inserisci uno dei seguenti valori: identificatori di entità per le identità nel pool che impersoneranno l'account di servizio.

      Per argomento

      principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT
      

      Sostituisci quanto segue:

      • PROJECT_NUMBER: il progetto numero
      • POOL_ID: l'ID del pool di carichi di lavoro
      • SUBJECT: la persona soggetto mappato dal tuo IdP, ad esempio administrator@example.com

      Per gruppo

      principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP
      

      Sostituisci quanto segue:

      • PROJECT_NUMBER: il numero del progetto
      • WORKLOAD_POOL_ID: l'ID del pool di carichi di lavoro
      • GROUP: il gruppo mappata dal tuo IdP, ad esempio: administrator-group@example.com

      Per attributo

      principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE
      

      Sostituisci quanto segue:

      • PROJECT_NUMBER: il numero del progetto
      • WORKLOAD_POOL_ID: carico di lavoro ID pool
      • ATTRIBUTE_NAME: uno dei che sono stati mappati dall'IdP
      • ATTRIBUTE_VALUE: il valore dell'attributo

      Vicino alla piscina

      <principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/*
      

      Sostituisci quanto segue:

      • PROJECT_NUMBER: il numero del progetto
      • WORKLOAD_POOL_ID: carico di lavoro ID pool
    6. In Seleziona un ruolo, seleziona l'utente Workload Identity (roles/iam.workloadIdentityUser).

    7. Per salvare la configurazione, fai clic su Salva.

gcloud

Per utilizzare gcloud CLI per concedere il ruolo Utente Workload Identity (roles/iam.workloadIdentityUser) alle identità esterne che soddisfano determinati criteri, esegui il seguente comando.

Per soggetto

gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \
    --role=roles/iam.workloadIdentityUser \
    --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT"

Per gruppo

gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \
    --role=roles/iam.workloadIdentityUser \
    --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP"

Per attributo

gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \
    --role=roles/iam.workloadIdentityUser \
    --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE"

Sostituisci quanto segue:

  • SERVICE_ACCOUNT_EMAIL: l'indirizzo email dell'account per il servizio
  • PROJECT_NUMBER: il numero del progetto. del progetto che contiene il pool di identità per i carichi di lavoro
  • POOL_ID: l'ID pool del pool di identità per i carichi di lavoro
  • SUBJECT: il valore previsto per l'attributo che che hai mappato a google.subject
  • GROUP: il valore previsto per l'attributo che che hai mappato a google.groups
  • ATTRIBUTE_NAME: il nome di un attributo personalizzato in la mappatura degli attributi
  • ATTRIBUTE_VALUE: il valore dell'attributo personalizzato nella mappatura degli attributi

Scarica la configurazione

Per consentire al tuo carico di lavoro di accedere alle librerie client, devi prima scaricare e configurare le credenziali predefinite dell'applicazione (ADC) come segue:

  1. Nella console Google Cloud, vai alla pagina Pool di identità di carico di lavoro.

    Vai ai pool di identità per i carichi di lavoro
  2. Nella tabella, seleziona il tuo pool per accedere alla relativa pagina dei dettagli.

  3. Fai clic su Concedi accesso.

  4. Seleziona Concedi l'accesso usando identità federate (consigliato).

  5. Per scaricare le credenziali predefinite dell'applicazione (ADC) in modo che il tuo carico di lavoro possa accedere alle librerie client:

    1. Fai clic su Scarica configurazione.

    2. Nella finestra di dialogo Configura l'applicazione, procedi nel seguente modo:

      1. Nell'elenco a discesa Provider, seleziona il tuo fornitore.

      2. In Percorso token OIDC o asserzione SAML , inserisci il percorso in cui si trovano il token o l'asserzione individuarlo.

      3. Nell'elenco a discesa Tipo di formato, seleziona la formato.

    3. Fai clic su Scarica configurazione e prendi nota del percorso in cui hai salvato il file.