Concessione e revoca di ruoli IAM

Questa pagina descrive come concedere i ruoli di Identity and Access Management (IAM) alle entità sulle risorse Secure Source Manager. Per informazioni sulla concessione dei ruoli su altre risorse Google Cloud , consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Le istanze e i repository di Secure Source Manager hanno i propri ruoli. La prima volta che concedi i ruoli delle istanze in un progetto, devi utilizzare lo strumento gcloud CLI o l'API REST. Puoi concedere i ruoli del repository con lo strumento gcloud CLI, l'API REST o tramite l'interfaccia web di Secure Source Manager.

Dopo aver concesso un ruolo Secure Source Manager almeno una volta utilizzando lo strumento gcloud CLI, l'interfaccia web o l'API REST, il ruolo diventa disponibile per la selezione nella console Google Cloud quando concedi l'accesso a livello di progetto. Tuttavia, le assegnazioni (associazioni) di ruoli specifiche a livello di istanza e di repository non vengono visualizzate nell'elenco delle entità nella pagina IAM della console Google Cloud a livello di progetto.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per aggiornare la policy IAM su un'istanza o un repository, chiedi all'amministratore di concederti i seguenti ruoli IAM:

Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Per informazioni sulla concessione dei ruoli di Secure Source Manager, consulta Controllo dell'accesso con IAM e Concedi agli utenti l'accesso alle istanze.

Specifica le entità

Un'entità rappresenta un'identità che può accedere a una risorsa. Ogni entità ha il proprio identificatore. Gli identificatori entità hanno il seguente formato:

PRINCIPAL-TYPE:ID

Ad esempio, user:my-user@example.com. Per saperne di più sulle entità, leggi Come funziona IAM.

Per il tipo di entità user, il nome di dominio nell'identificatore deve essere un dominio Google Workspace o un dominio Cloud Identity, a meno che tu non utilizzi la federazione delle identità per la forza lavoro. Per scoprire come configurare un dominio Cloud Identity, consulta la panoramica di Cloud Identity.

Entità della federazione delle identità per la forza lavoro

Se utilizzi la federazione delle identità per la forza lavoro per accedere a Secure Source Manager, le entità vengono rappresentate in modo diverso. Per scoprire di più sulla concessione dell'accesso alle entità che rappresentano gruppi di identità, consulta Rappresenta gli utenti del pool di forza lavoro nelle policy IAM.

Ad esempio, il seguente comando concede all'utente user@example.com il ruolo Instance Accessor (roles/securesourcemanager.instanceAccessor) nel pool di forza lavoro my-pool nell'istanza my-instance nel progetto my-project nella regione us-central1:

  gcloud source-manager instances add-iam-policy-binding my-instance \
      --project=my-project \
      --region=us-central1 \
      --member=principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/user@example.com \
      --role=roles/securesourcemanager.instanceAccessor

Puoi concedere l'accesso a utenti o gruppi all'interno del pool di identità per la forza lavoro in base agli attributi del tuo provider di identità (IdP) o utilizzare il Common Expression Language (CEL) per mappare gli attributi OIDC ad attributi personalizzati per definire una strategia di autorizzazione nella policy IAM. Per saperne di più sulle mappature degli attributi, consulta Mappature degli attributi.

Concedi o revoca i ruoli dell'istanza

Per concedere o revocare i ruoli delle istanze per le entità, utilizza lo strumento gcloud CLI o l'API Secure Source Manager.

gcloud

  1. Per concedere un ruolo a un'entità su un'istanza, esegui questo comando:

    gcloud source-manager instances add-iam-policy-binding INSTANCE_ID \
        --project=PROJECT_ID \
        --region=REGION \
        --member=PRINCIPAL \
        --role=ROLE_NAME
    

    Sostituisci quanto segue:

    • INSTANCE_ID con l'ID istanza.
    • PROJECT_ID con l'ID progetto o il numero di progetto dell'istanza.
    • REGION con la regione in cui si trova l'istanza. Consulta la documentazione sulle località per le regioni Secure Source Manager disponibili.
    • PRINCIPAL con l'entità a cui concedere il ruolo. Ad esempio, user:my-user@example.com.
    • ROLE_NAME con il nome del ruolo da concedere. Ad esempio, roles/securesourcemanager.instanceOwner.
  2. Per revocare un ruolo a un'entità su un'istanza, esegui questo comando:

    gcloud source-manager instances remove-iam-policy-binding INSTANCE_ID \
        --project=PROJECT_ID \
        --region=REGION \
        --member=PRINCIPAL \
        --role=ROLE_NAME
    

    Sostituisci quanto segue:

    • INSTANCE_ID con l'ID istanza.
    • PROJECT_ID con l'ID progetto o il numero di progetto dell'istanza.
    • REGION con la regione in cui si trova l'istanza.
    • PRINCIPAL con l'entità da cui revocare il ruolo. Ad esempio, user:my-user@example.com.
    • ROLE_NAME con il nome del ruolo da revocare. Ad esempio, roles/securesourcemanager.instanceOwner.

API

  1. Esegui il seguente comando instances.getIamPolicy per leggere la policy attuale:

    curl \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        https://securesourcemanager.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/instances/INSTANCE_ID:getIamPolicy > /tmp/instance.json
    

    Sostituisci quanto segue:

    • PROJECT_ID l'ID progetto o il numero di progetto dell'istanza.
    • REGION la regione in cui si trova l'istanza. Consulta la documentazione sulle località per le regioni Secure Source Manager disponibili.
    • INSTANCE_ID l'ID istanza.

    L'output includerà eventuali associazioni esistenti o, se non ne esistono, il valore etag simile al seguente:

    {
        "etag": "BwUjHYKJUiQ="
    }
    
  2. In modo programmatico o utilizzando un editor di testo, modifica la copia locale della policy di autorizzazione dell'istanza in modo che rifletta i ruoli che vuoi concedere o revocare.

    Per assicurarti di non sovrascrivere altre modifiche, non modificare o rimuovere il campo etag della policy di autorizzazione. Il campo etag identifica lo stato attuale della policy di autorizzazione. Quando imposti la policy di autorizzazione aggiornata, IAM confronta il valore etag nella richiesta con il etag esistente e scrive la policy di autorizzazione solo se i valori corrispondono.

    Per modificare i ruoli concessi da una policy di autorizzazione, devi modificare le associazioni dei ruoli nella policy di autorizzazione. Le associazioni dei ruoli hanno il seguente formato:

    {
      "role": "ROLE_NAME",
      "members": [
        "PRINCIPAL_1",
        "PRINCIPAL_2",
        ...
        "PRINCIPAL_N"
      ]
    }
    

    I segnaposto hanno i seguenti valori:

    • ROLE_NAME: il nome del ruolo che vuoi concedere. Utilizza il formato seguente: roles/securesourcemanager.IDENTIFIER

    • PRINCIPAL_1, PRINCIPAL_2, ...PRINCIPAL_N: identificatori delle entità a cui vuoi concedere il ruolo.

    Ad esempio, la seguente policy concede il ruolo instanceOwner a user1@gmail.com e il ruolo instanceManager agli utenti user2@gmail.com, user3@gmail.com e al account di servizio my-other-app@.

    {
    "policy": {
        "etag": "BwUjHYKJUiQ=",
        "bindings": [
        {
            "role": "roles/securesourcemanager.instanceOwner",
            "members": [
                "user:user1@gmail.com"
            ]
        },
        {
            "role": "roles/resourcemanager.instanceManager",
            "members": [
                "user:user2@gmail.com",
                "user:user3@gmail.com",
                "serviceAccount:my-other-app@"
            ]
        }
        ]
    }
    }
    
  3. Dopo aver modificato la policy di autorizzazione per concedere e revocare i ruoli scelti, chiama instances.setIamPolicy() per apportare gli aggiornamenti.

    Utilizza il seguente comando instances.setIamPolicy per impostare la nuova policy sull'istanza.

    curl \
        -H "Content-Type: application/json" \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        https://securesourcemanager.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/instances/INSTANCE_ID:setIamPolicy \
        -d @/tmp/instance.json
    

    Sostituisci quanto segue:

    • PROJECT_ID l'ID progetto o il numero di progetto dell'istanza.
    • REGION la regione in cui si trova l'istanza. Consulta la documentazione sulle località per le regioni Secure Source Manager disponibili.
    • INSTANCE_ID l'ID istanza.

Concedi o revoca i ruoli del repository

Per concedere o revocare i ruoli del repository a utenti e service account, puoi assegnarli dall'interfaccia web di Secure Source Manager o utilizzare l'API Secure Source Manager per aggiornare la policy di autorizzazione del repository. Per concedere i ruoli del repository ai gruppi, devi utilizzare l'API Secure Source Manager.

Agli utenti deve essere concesso un ruolo di istanza prima che possano essere concessi i ruoli del repository. Per informazioni sulla concessione dei ruoli dell'istanza, consulta Concedi o revoca i ruoli dell'istanza.

Interfaccia web

Per concedere agli utenti o ai service account i ruoli a livello di repository utilizzando l'interfaccia web:

  1. Vai all'URL dell'istanza fornito dal tuo contatto Google.
  2. Nella pagina I miei repository, seleziona il tuo repository.
  3. Fai clic sulla scheda Autorizzazioni.
  4. Nella sezione Persone e autorizzazioni, fai clic su Aggiungi utenti.
  5. Nel campo Aggiungi entità, inserisci l'indirizzo email dell'utente o del service account a cui vuoi concedere il ruolo.
  6. Nel menu Assegna un ruolo, seleziona il ruolo da assegnare.
  7. Fai clic su Salva.

Per aggiungere altri ruoli, fai clic sull'icona edit Modifica e aggiungi i ruoli utilizzando il menu Assegna un ruolo.

API

Il metodo repositories.getIamPolicy dell'API Secure Source Manager recupera la policy di autorizzazione di un repository.

  1. Eseguire quanto seguerepositories.getIamPolicy comando per leggere la policy corrente e salvarla in/tmp/repository.json:
curl \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    https://securesourcemanager.googleapis.com/v1/projects/REPOSITORY_PROJECT/locations/REGION/repositories/REPOSITORY_ID:getIamPolicy > /tmp/repository.json

Sostituisci quanto segue:

  • REPOSITORY_PROJECT l'ID progetto o il numero di progetto del repository.
  • REGION la regione in cui si trova il repository.
  • REPOSITORY_ID l'ID repository.

L'output includerà eventuali associazioni esistenti o, se non ne esistono, il valore etag simile al seguente:

{
    "etag": "BwUjHYKJUiQ="
}
  1. In modo programmatico o utilizzando un editor di testo, modifica la copia locale della policy di autorizzazione del repository salvata in /tmp/repository.json in modo che rifletta i ruoli che vuoi concedere o revocare.

    Per assicurarti di non sovrascrivere altre modifiche, non modificare o rimuovere il campo etag della policy di autorizzazione. Il campo etag identifica lo stato attuale della policy di autorizzazione. Quando imposti la policy di autorizzazione aggiornata, IAM confronta il valore etag nella richiesta con il valore etag esistente e scrive la policy di autorizzazione solo se i valori corrispondono.

    Per modificare i ruoli concessi da una policy di autorizzazione, devi modificare le associazioni dei ruoli nella policy di autorizzazione. Le associazioni dei ruoli hanno il seguente formato:

    {
      "role": "ROLE_NAME",
      "members": [
        "PRINCIPAL_1",
        "PRINCIPAL_2",
        ...
        "PRINCIPAL_N"
      ]
    }
    

    I segnaposto hanno i seguenti valori:

    • ROLE_NAME: il nome del ruolo che vuoi concedere. Utilizza il formato seguente: roles/securesourcemanager.<var>IDENTIFIER</var>

    • PRINCIPAL_1, PRINCIPAL_2, ...PRINCIPAL_N: identificatori delle entità a cui vuoi concedere il ruolo.

    L'esempio seguente concede il ruolo repoAdmin all'utente email1@gmail.com e il ruolo repoWriter agli utenti email2@gmail.com, group1@gmail.com e al account di servizio my-other-app@.

    {
    "policy": {
        "etag": "BwUjHYKJUiQ=",
        "bindings": [
        {
            "role": "roles/securesourcemanager.repoAdmin",
            "members": [
                "user:email1@gmail.com"
            ]
        },
        {
            "role": "roles/resourcemanager.repoWriter",
            "members": [
                "user:email2@gmail.com",
                "group:group1@gmail.com",
                "serviceAccount:my-other-app@"
            ]
        }
        ]
    }
    }
    
  2. Salva il file /tmp/repository.json modificato.

  3. Imposta la nuova policy con il comando setIamPolicy:

    curl \
        -H "Content-Type: application/json" \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        https://securesourcemanager.googleapis.com/v1/projects/REPOSITORY_PROJECT/locations/REGION/repositories/REPOSITORY_ID:setIamPolicy \
        -d @/tmp/repository.json
    

    Sostituisci quanto segue:

    • REPOSITORY_PROJECT l'ID progetto o il numero di progetto del repository.
    • REGION la regione in cui si trova il repository. Consulta la documentazione sulle località per le regioni Secure Source Manager disponibili.
    • REPOSITORY_ID l'ID repository.

Passaggi successivi