Utilizzo del controllo dell'accesso basato sui ruoli

Questa pagina descrive come iniziare a utilizzare il controllo dell'accesso basato su ruoli (RBAC) nelle istanze Cloud Data Fusion. Il controllo dell'accesso basato sui ruoli (RBAC) è disponibile nelle istanze Cloud Data Fusion in esecuzione nelle versioni 6.5 e successive.

Per ulteriori informazioni, consulta la panoramica del controllo degli accessi basato sui ruoli (RBAC).

Consigliato: a meno che non sia necessario per scopi di automazione, utilizza la console Google Cloud per eseguire le attività RBAC.

Attivare RBAC per un'istanza esistente

Puoi abilitare RBAC per un'istanza Cloud Data Fusion esistente che esegue la versione 6.5 o successive.

Console

Per attivare il RBAC in un'istanza Cloud Data Fusion esistente:

  1. Vai ai dettagli dell'istanza:
    1. Nella console Google Cloud, vai alla pagina Cloud Data Fusion.

    2. Fai clic su Istanze, quindi sul nome dell'istanza per andare alla pagina Dettagli istanza.

      Vai a Istanze

  2. Assicurati che sia stato eseguito l'upgrade dell'istanza alla versione 6.5 o successiva. Se l'istanza è precedente alla 6.5, esegui l'upgrade alla versione 6.5 o successiva.
  3. Fai clic su Abilita RBAC.
  4. Fai clic su Salva.
  5. Attendi il completamento dell'operazione di aggiornamento dell'istanza.

gcloud

Per attivare il RBAC in un'istanza Cloud Data Fusion esistente, esegui il seguente comando:

gcloud beta data-fusion instances update --enable_rbac --location=REGION INSTANCE_ID

API REST

Attiva il RBAC per un'istanza esistente con l'API patch di Cloud Data Fusion. Imposta il flag enableRbac su true e utilizza il parametro di query updateMask con il seguente comando di esempio:

export PROJECT=PROJECT_ID
export LOCATION=REGION
export INSTANCE=INSTANCE_ID
export DATA_FUSION_API_NAME=datafusion.googleapis.com
alias gcurl='curl --header "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'
gcurl https://$DATA_FUSION_API_NAME/v1beta1/projects/$PROJECT/locations/$LOCATION/instances/$INSTANCE?updateMask=enable_rbac -X PATCH -d '{"enable_rbac": "true"}'

Disattivare RBAC per un'istanza esistente

Se hai un'istanza esistente con RBAC abilitato, puoi disabilitarlo se necessario. La disattivazione del RBAC non influisce su pipeline o configurazioni esistenti nell'istanza. ma disattiva l'isolamento della sicurezza tra gli spazi dei nomi.

Console

Per disattivare il RBAC in un'istanza Cloud Data Fusion esistente:

  1. Vai ai dettagli dell'istanza:

    1. Nella console Google Cloud, vai alla pagina Cloud Data Fusion.

    2. Fai clic su Istanze, quindi sul nome dell'istanza per andare alla pagina Dettagli istanza.

      Vai a Istanze

  2. Fai clic su Disabilita RBAC.

  3. Fai clic su Salva.

  4. Attendi il completamento dell'operazione di aggiornamento dell'istanza.

gcloud

Per disattivare RBAC per un'istanza esistente, utilizza l'argomento --no-enable_rbac anziché --enable-rbac.

gcloud beta data-fusion instances update --no-enable_rbac --location=REGION INSTANCE_ID

Esempio di utilizzo:

gcloud beta data-fusion instances update --no-enable_rbac --location=us-east1 cdf-test-instance

API REST

Disattiva il RBAC per un'istanza esistente con l'API patch di Cloud Data Fusion. Imposta il flag enableRbac su false e utilizza il parametro di query updateMask con il seguente comando di esempio:

export PROJECT=PROJECT_ID
export LOCATION=REGION
export INSTANCE=INSTANCE_ID
export DATA_FUSION_API_NAME=datafusion.googleapis.com
alias gcurl='curl --header "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'
gcurl https://$DATA_FUSION_API_NAME/v1beta1/projects/$PROJECT/locations/$LOCATION/instances/$INSTANCE?updateMask=enable_rbac -X PATCH -d '{"enable_rbac": "false"}'

Creare una nuova istanza abilitata per RBAC

Console

Per creare una nuova istanza Cloud Data Fusion con il RBAC abilitato:

  1. Vai alla pagina Istanze di Cloud Data Fusion.

  2. Fai clic su Istanze.

    Vai a Istanze

  3. Fai clic su Crea un'istanza e inserisci i dettagli dell'istanza.

  4. Seleziona la versione Enterprise. Il RBAC è supportato solo nella versione Enterprise.

  5. In Opzioni avanzate, seleziona Attiva controllo dell'accesso granulare basato sui ruoli.

    Questa funzionalità è disponibile solo nelle istanze che utilizzano Cloud Data Fusion 6.5 e versioni successive.

  6. Fai clic su Crea.

gcloud

Per creare una nuova istanza abilitata per RBAC, esegui il seguente comando:

gcloud beta data-fusion instances create --edition=enterprise \
--enable_rbac \
--location=REGION INSTANCE_ID \
--version=6.5.0

Esempio di utilizzo:

gcloud beta data-fusion instances create --edition=enterprise \
--enable_rbac \
--location=us-east1 \
--version=6.5.0

API REST

Per creare un'istanza abilitata al RBAC utilizzando l'API REST, passa il flag enableRbac impostato su true nelle opzioni dell'istanza come mostrato nei seguenti comandi:

export PROJECT=PROJECT_ID
export LOCATION=REGION
export INSTANCE=INSTANCE_ID
export DATA_FUSION_API_NAME=datafusion.googleapis.com
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://$DATA_FUSION_API_NAME/v1beta1/projects/$PROJECT/locations/$LOCATION/instances?instanceId=$INSTANCE -X POST -d '{"description": "RBAC CDF instance created through REST", "type": "ENTERPRISE", "enableRbac": "true"}'

Concedi agli utenti i ruoli Cloud Data Fusion predefiniti (obbligatorio)

Dopo aver attivato il RBAC, concedi i ruoli alle entità per consentirle di eseguire azioni specifiche in un'istanza o in uno spazio dei nomi. Per decidere quali ruolisoddisfano al meglio i tuoi requisiti, consulta i ruoli predefiniti di Cloud Data Fusion e i consigli per la sicurezza.

Console

Per concedere agli entità i ruoli Cloud Data Fusion predefiniti:

  1. Vai alla pagina Autorizzazioni di Cloud Data Fusion.

    Vai ad Autorizzazioni

  2. Fai clic su Aggiungi .

    Viene visualizzata la finestra di dialogo Aggiungi l'accesso degli utenti.

  3. Nel campo Nuovi membri, inserisci un elenco di entità (utenti, gruppi o email degli account di servizio) a cui concedere i ruoli.

  4. Seleziona la casella accanto a ogni istanza per la quale vuoi concedere queste autorizzazioni.

    Seleziona istanze

  5. Vai alla colonna Ruolo e seleziona il menu a discesa accanto alle istanze scelte.

    1. Per concedere le autorizzazioni di amministratore dell'istanza, seleziona Amministratore dell'istanza.

    2. Per concedere autorizzazioni a livello di spazio dei nomi, seleziona Utente dello spazio dei nomi.

      Seleziona i ruoli utente dello spazio dei nomi

      1. Se concedi autorizzazioni a livello di spazio dei nomi, fai clic su Seleziona.

        Si apre la finestra di dialogo Aggiungi diritti di accesso.

      2. Seleziona uno spazio dei nomi e il ruolo Cloud Data Fusion predefinito che vuoi concedere per lo spazio dei nomi.

      3. Fai clic su Seleziona per salvare le nuove impostazioni.

      4. (Facoltativo) Per concedere le autorizzazioni del nome di spazio per altre istanze, ripeti il passaggio 5.

  6. Fai clic su Salva.

    Per verificare i ruoli che sono stati concessi, consulta Verificare i ruoli nella console Google Cloud.

gcloud

Puoi utilizzare Google Cloud CLI per controllare l'accesso in modo programmatico.

Per concedere un ruolo utilizzando gcloud CLI, utilizza un elenco di identificatori utente delimitati da virgole nel seguente formato:

[user|group|serviceAccount][email_address]

Fornisci i seguenti valori:

  • user:useremail@example.com
  • group:groupemail@example.com
  • serviceAccount:serviceaccount@project.iam.gserviceaccount.com

Per altri esempi, vedi Concedere un ruolo.

Concedi il ruolo di accessore dell'istanza (obbligatorio)

Devi prima concedere a un utente l'accesso all'istanza concedendogli il ruolo Accesso in un'istanza:

  1. Esporta le seguenti variabili con il seguente comando, sostituendo le variabili con i tuoi valori:

    export PROJECT=PROJECT_ID
    export INSTANCE=INSTANCE_ID
    export REGION=REGION
    export USER_ID=EMAIL
    export USER_TYPE=USER_TYPE
    

    Sostituisci le seguenti variabili con i tuoi valori:

    • PROJECT_ID: il nome del progetto.
    • INSTANCE_ID: il nome dell'istanza.
    • REGION: la regione a cui appartiene il progetto.
    • EMAIL: l'indirizzo email del proprietario.
    • USER_TYPE: il tipo di utente può essere uno dei seguenti: user, group o serviceAccount.
  2. Esegui il seguente comando per assegnare il ruolo:

    gcloud beta data-fusion add-iam-policy-binding ${INSTANCE} --project ${PROJECT} --location=${REGION} --member="${USER_TYPE}:${USER_ID}" --role="roles/datafusion.accessor"
    

Concedi i ruoli a uno spazio dei nomi (a seconda del caso d'uso)

A seconda del caso d'uso, concedi i ruoli con i seguenti comandi:

  1. Esporta le seguenti variabili con il seguente comando, sostituendo le variabili con i tuoi valori:

    export PROJECT=PROJECT_ID
    export INSTANCE=INSTANCE_ID
    export REGION=REGION
    export NAMESPACE=NAMESPACE
    export USER_ID=EMAIL
    export USER_TYPE=USER_TYPE
    

    Sostituisci le seguenti variabili con i tuoi valori:

    • PROJECT_ID: il nome del progetto.
    • INSTANCE_ID: il nome dell'istanza.
    • REGION: la regione a cui appartiene il progetto.
    • NAMESPACE: il nome dello spazio dei nomi.
    • EMAIL: l'indirizzo email del proprietario.
    • USER_TYPE: il tipo di utente può essere uno dei seguenti: user, group o serviceAccount.
  2. Esegui il seguente comando per assegnare un ruolo a un entità in un determinato ambito:

    gcloud beta data-fusion add-iam-policy-binding ${INSTANCE} --project ${PROJECT} --location=${REGION} --namespace=${NAMESPACE} --member="${USER_TYPE}:${USER_ID}" --role="roles/ROLE_NAME"
    

    Sostituisci ROLE_NAME con uno dei seguenti valori:

    • Per il ruolo Editor di uno spazio dei nomi, utilizza datafusion.editor
    • Per il ruolo Operatore per uno spazio dei nomi, utilizza datafusion.operator
    • Per il ruolo Sviluppatore per uno spazio dei nomi, utilizza datafusion.developer
    • Per il ruolo Visualizzatore di uno spazio dei nomi, utilizza datafusion.viewer

(Facoltativo) Revocare i ruoli dello spazio dei nomi

Per revocare il ruolo concesso a un utente per un determinato spazio dei nomi, utilizza il seguente comando:

export PROJECT=PROJECT_ID
export INSTANCE=INSTANCE_ID
export REGION=REGION
export NAMESPACE=NAMESPACE
export USER_ID=EMAIL
# User type can be one of: user, group, or serviceAccount.
export USER_TYPE=USER_TYPE
export ROLE=ROLE_NAME
gcloud beta data-fusion remove-iam-policy-binding ${INSTANCE} --project ${PROJECT} --location=${REGION} --namespace=${NAMESPACE} --member="${USER_TYPE}:${USER_ID}" --role="${ROLE}"

(Facoltativo) Elenca i ruoli concessi in un determinato spazio dei nomi

Per elencare tutti i ruoli concessi in un determinato spazio dei nomi, utilizza il seguente comando per recuperare il criterio IAM:

export PROJECT=PROJECT_ID
export INSTANCE=INSTANCE_ID
export REGION=REGION
export NAMESPACE=NAMESPACE
gcloud beta data-fusion get-iam-policy ${INSTANCE} --project ${PROJECT} --location=${REGION} --namespace=${NAMESPACE}

API REST

Concedi il ruolo di accessore dell'istanza (obbligatorio)

Devi prima concedere a un utente l'accesso all'istanza concedendogli il ruolo Accesso in un'istanza.

Fortemente consigliato: utilizza gcloud CLI per concedere il ruolo Accesso.

  1. Concedi il ruolo di accessore a un'istanza:

    export PROJECT=PROJECT_ID
    export INSTANCE=INSTANCE_ID
    export REGION=REGION
    export USER_ID=EMAIL
    # User type can be one of: user, group, or serviceAccount.
    export USER_TYPE=USER_TYPE
    alias gcurl='curl --header "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'
    
  2. Recupera il criterio IAM corrente e salvalo in un file:

    gcurl https://datafusion.googleapis.com/v1beta1/projects/${PROJECT}/locations/${REGION}/instances/${INSTANCE}:getIamPolicy > iam_policy.json
    
  3. Aggiungi una associazione per il ruolo e l'utente nel criterio. Ad esempio:

    {
      "policy": {
        "bindings": [
          {
            "role": "roles/datafusion.accessor",
            "members": [
              "${USER_TYPE}:${USER_ID}"
            ]
          }
        ]
      }
    }
    
  4. Aggiorna il criterio IAM dell'istanza:

    gcurl \
      -d @iam_policy.json \
      https://datafusion.googleapis.com/v1beta1/projects/${PROJECT}/locations/${REGION}/instances/${INSTANCE}:setIamPolicy
    

Concedi i ruoli a uno spazio dei nomi (a seconda del caso d'uso)

A seconda del caso d'uso, concedi i ruoli con i seguenti comandi:

  1. Esporta le seguenti variabili con il seguente comando, sostituendo le variabili con i tuoi valori:

    export PROJECT=PROJECT_ID
    export INSTANCE=INSTANCE_ID
    export REGION=REGION
    export NAMESPACE=NAMESPACE
    export USER_ID=EMAIL
    export USER_TYPE=USER_TYPE
    alias gcurl='curl --header "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'
    

    Sostituisci le seguenti variabili con i tuoi valori:

    • PROJECT_ID: il nome del progetto.
    • INSTANCE_ID: il nome dell'istanza.
    • REGION: la regione a cui appartiene il progetto.
    • NAMESPACE: il nome dello spazio dei nomi.
    • EMAIL: l'indirizzo email del proprietario.
    • USER_TYPE: il tipo di utente può essere uno dei seguenti: user, group o serviceAccount.
  2. Recupera il criterio IAM corrente e salvalo in un file:

      gcurl https://datafusion.googleapis.com/v1beta1/projects/${PROJECT}/locations/${REGION}/instances/${INSTANCE}/namespaces/{NAMESPACE}:getIamPolicy > iam_policy.json
    

    Sostituisci iam_policy.json con il nome del file.

  3. Aggiungi un'associazione per il ruolo e l'utente nel file delle norme. Ad esempio, il file di criteri potrebbe avere il seguente aspetto:

    {
      "policy": {
        "bindings": [
          {
            "role": "roles/ROLE_NAME",
              "members": [
              "${USER_TYPE}:${USER_ID}"
            ]
          }
        ]
      }
    }
    

    È possibile specificare più associazioni di ruoli per un determinato criterio e più principali nell'elenco members per una determinata associazione di ruoli. Per un determinato utente principale, sostituisci ROLE_NAME con uno dei seguenti valori:

    • Per il ruolo Editor di uno spazio dei nomi, utilizza datafusion.editor
    • Per il ruolo Operatore per uno spazio dei nomi, utilizza datafusion.operator
    • Per il ruolo Sviluppatore per uno spazio dei nomi, utilizza datafusion.developer
    • Per il ruolo Visualizzatore di uno spazio dei nomi, utilizza datafusion.viewer
  4. Esegui il seguente comando per aggiornare il file delle norme:

    gcurl -d @iam_policy.json \
    https://datafusion.googleapis.com/v1beta1/projects/${PROJECT}/locations/${REGION}/instances/${INSTANCE}/namespaces/{NAMESPACE}:setIamPolicy
    

    Sostituisci iam_policy.json con il nome del file.

Verificare i ruoli nella console Google Cloud

Rivedi e modifica i ruoli esistenti nella pagina Autorizzazioni di Cloud Data Fusion.

Vai ad Autorizzazioni

Verificare i ruoli con il file Policy

Verifica che i ruoli siano concessi agli utenti corretti nel file Criterio IAM utilizzando l'interfaccia a riga di comando gcloud o l'API REST.

Nel seguente esempio di file di criteri IAM, l'utentealice@example.com ha il ruolo Sviluppatore Data Fusion:

bindings:
- members:
  - user:alice@example.com
  role: roles/datafusion.developer
- members:
  - user:bob@example.com
  - serviceAccount:myserviceaccount@myproject.iam.gserviceaccount.com
  role: roles/datafusion.operator
- members:
  - user:james@example.com
  - user:mike@example.com
  - group:mygroup@googlegroups.com
  role: roles/datafusion.editor
etag: BwXA8BAHYmw=

Recupera il criterio IAM per un'istanza

gcloud

export PROJECT=PROJECT_ID
export INSTANCE=INSTANCE_ID
export REGION=REGION
gcloud beta data-fusion get-iam-policy ${INSTANCE} --project ${PROJECT} --location=${REGION}

cURL

export PROJECT=PROJECT_ID
export INSTANCE=INSTANCE_ID
export REGION=REGION
curl -H "Authorization: Bearer "$(gcloud auth print-access-token) \
https://datafusion.googleapis.com/v1beta1/projects/${PROJECT}/locations/${REGION}/instances/${INSTANCE}:getIamPolicy

Recupera il criterio IAM per un namespace

gcloud

export PROJECT=PROJECT_ID
export INSTANCE=INSTANCE_ID
export REGION=REGION
export NAMESPACE=NAMESPACE
gcloud beta data-fusion get-iam-policy ${INSTANCE} --project ${PROJECT} --location=${REGION} --namespace=${NAMESPACE}

cURL

export PROJECT=PROJECT_ID
export INSTANCE=INSTANCE_ID
export NAMESPACE=NAMESPACE
export REGION=REGION
curl -H "Authorization: Bearer "$(gcloud auth print-access-token) \
https://datafusion.googleapis.com/v1beta1/projects/${PROJECT}/locations/${REGION}/instances/${INSTANCE}/namespaces/${NAMESPACE}:getIamPolicy

Passaggi successivi