Rollenbasierte Zugriffssteuerung verwenden

Auf dieser Seite wird beschrieben, wie Sie die rollenbasierte Zugriffssteuerung (Role-Based Access Control, RBAC) in Cloud Data Fusion-Instanzen verwenden. RBAC ist in Cloud Data Fusion-Instanzen verfügbar, die in Version 6.5 und höher ausgeführt werden.

Weitere Informationen finden Sie in der Übersicht über die rollenbasierte Zugriffssteuerung (Role-Based Access Control, RBAC).

Empfohlen:Verwenden Sie die Google Cloud Console, um Ihre RBAC-Aufgaben auszuführen, sofern dies nicht für Automatisierungszwecke erforderlich ist.

RBAC für eine vorhandene Instanz aktivieren

Sie können RBAC für eine vorhandene Cloud Data Fusion-Instanz aktivieren, die in Version 6.5 oder höher ausgeführt wird.

Console

So aktivieren Sie RBAC für eine vorhandene Cloud Data Fusion-Instanz:

  1. Rufen Sie die Instanzdetails auf:
    1. Rufen Sie in der Google Cloud Console die Seite „Cloud Data Fusion“ auf.

    2. Klicken Sie auf Instanzen und dann auf den Namen der Instanz, um die Seite Instanzdetails aufzurufen.

      Zur Seite „VM-Instanzen“

  2. Prüfen Sie, ob die Instanz auf Version 6.5 oder höher aktualisiert wurde. Wenn die Instanz eine ältere Version als 6.5 hat, führen Sie ein Upgrade auf Version 6.5 oder höher durch.
  3. Klicken Sie auf RBAC aktivieren.
  4. Klicken Sie auf Speichern.
  5. Warten Sie, bis die Instanzaktualisierung abgeschlossen ist.

gcloud

Führen Sie den folgenden Befehl aus, um RBAC für eine vorhandene Cloud Data Fusion-Instanz zu aktivieren:

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

REST API

RBAC für eine vorhandene Instanz mit der Patch API von Cloud Data Fusion aktivieren Legen Sie das Flag enableRbac auf true fest und verwenden Sie den Abfrageparameter updateMask mit dem folgenden Beispielbefehl:

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"}'

RBAC für eine vorhandene Instanz deaktivieren

Wenn Sie eine vorhandene Instanz mit aktiviertem RBAC haben, können Sie RBAC bei Bedarf deaktivieren. Das Deaktivieren von RBAC hat keine Auswirkungen auf vorhandene Pipelines oder Konfigurationen in der Instanz. Die Sicherheitsisolation wird lediglich über Namespaces hinweg deaktiviert.

Console

So deaktivieren Sie RBAC für eine vorhandene Cloud Data Fusion-Instanz:

  1. Rufen Sie die Instanzdetails auf:

    1. Rufen Sie in der Google Cloud Console die Seite „Cloud Data Fusion“ auf.

    2. Klicken Sie auf Instanzen und dann auf den Namen der Instanz, um die Seite Instanzdetails aufzurufen.

      Zur Seite „VM-Instanzen“

  2. Klicken Sie auf RBAC deaktivieren.

  3. Klicken Sie auf Speichern.

  4. Warten Sie, bis die Instanzaktualisierung abgeschlossen ist.

gcloud

Verwenden Sie das Argument --no-enable_rbac anstelle von --enable-rbac, um RBAC für eine vorhandene Instanz zu deaktivieren.

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

Anwendungsbeispiel:

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

REST API

RBAC für eine vorhandene Instanz mit der Patch API von Cloud Data Fusion deaktivieren Legen Sie das Flag enableRbac auf false fest und verwenden Sie den Abfrageparameter updateMask mit dem folgenden Beispielbefehl:

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"}'

Neue RBAC-fähige Instanz erstellen

Console

So erstellen Sie eine neue Cloud Data Fusion-Instanz mit aktivierter RBAC:

  1. Rufen Sie die Seite Cloud Data Fusion-Seite Instanzen auf.

  2. Klicken Sie auf Instanzen.

    Zur Seite „VM-Instanzen“

  3. Klicken Sie auf Instanz erstellen und geben Sie die Instanzdetails ein.

  4. Wählen Sie die Enterprise Edition aus. RBAC wird nur in der Enterprise-Version unterstützt.

  5. Wählen Sie unter Erweiterte Optionen die Option Detaillierte rollenbasierte Zugriffssteuerung aktivieren aus.

    Diese Funktion ist nur in Instanzen verfügbar, die Cloud Data Fusion Version 6.5 und höher verwenden.

  6. Klicken Sie auf Erstellen.

gcloud

Führen Sie den folgenden Befehl aus, um eine neue RBAC-fähige Instanz zu erstellen:

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

Anwendungsbeispiel:

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

REST API

Um eine RBAC-fähige Instanz mit der REST API zu erstellen, übergeben Sie das Flag enableRbac, das in den Instanzoptionen auf true gesetzt ist, wie in den folgenden Befehlen gezeigt:

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"}'

Nutzern vordefinierte Cloud Data Fusion-Rollen zuweisen (erforderlich)

Nachdem RBAC aktiviert ist, weisen Sie Hauptkonten Rollen zu, damit sie bestimmte Aktionen in einer Instanz oder einem Namespace ausführen können. Informationen dazu, welche Rollen Ihren Anforderungen am besten entsprechen, finden Sie unter Vordefinierte Cloud Data Fusion-Rollen und Sicherheitsempfehlungen.

Console

So weisen Sie Hauptkonten vordefinierte Cloud Data Fusion-Rollen zu:

  1. Rufen Sie die Cloud Data Fusion-Seite Berechtigungen auf.

    Zur Seite "Berechtigungen"

  2. Klicken Sie auf Hinzufügen.

    Das Dialogfeld Nutzerzugriff hinzufügen wird geöffnet.

  3. Geben Sie im Feld Neue Mitglieder eine Liste der Hauptkonten (Nutzer, Gruppen oder Dienstkonto-E-Mails) ein, denen Sie Rollen zuweisen möchten.

  4. Klicken Sie das Kästchen neben jeder Instanz an, der Sie diese Berechtigungen gewähren möchten.

    Instanzen auswählen

  5. Wechseln Sie zur Spalte Rolle und wählen Sie neben den gewünschten Instanzen das Drop-down-Menü aus.

    1. Um Administratorberechtigungen für Instanzen zu gewähren, wählen Sie Instanzadministrator.

    2. Wählen Sie Namespace-Nutzer aus, um Berechtigungen auf Namespace-Ebene zu gewähren.

      Namespace-Nutzerrollen auswählen

      1. Wenn Sie Berechtigungen auf Namespace-Ebene gewähren, klicken Sie auf Auswählen.

        Das Dialogfeld Zugriffsrechte hinzufügen wird geöffnet.

      2. Wählen Sie einen Namespace aus und wählen Sie die vordefinierte Cloud Data Fusion-Rolle, die Sie für den Namespace zuweisen möchten.

      3. Klicken Sie auf Auswählen, um die neuen Einstellungen zu speichern.

      4. Optional: Wiederholen Sie Schritt 5, um anderen Instanzen Namespace-Berechtigungen zu erteilen.

  6. Klicken Sie auf Speichern.

    Informationen zu den zugewiesenen Rollen finden Sie unter Rollen in der Google Cloud Console prüfen.

gcloud

Mit der Google Cloud CLI können Sie den Zugriff programmatisch steuern.

Wenn Sie eine Rolle über die gcloud CLI zuweisen möchten, verwenden Sie eine durch Kommas getrennte Liste von Nutzerkennungen im folgenden Format:

[user|group|serviceAccount][email_address]

Geben Sie folgende Werte an:

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

Weitere Beispiele finden Sie unter Rolle zuweisen.

Rolle "Instanzzugriff" zuweisen (erforderlich)

Sie müssen einem Nutzer zuerst Zugriff auf die Instanz gewähren, indem Sie ihm die Rolle "Instanzzugriff" zuweisen:

  1. Exportieren Sie die folgenden Variablen mit dem folgenden Befehl und ersetzen Sie die Variablen durch Ihre eigenen Werte:

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

    Ersetzen Sie die folgenden Variablen durch Ihre eigenen Werte:

    • PROJECT_ID: der Name Ihres Projekts
    • INSTANCE_ID: der Name Ihrer Instanz
    • REGION: die Region, zu der das Projekt gehört
    • EMAIL: die E-Mail-Adresse des Hauptkontos
    • USER_TYPE: der Nutzertyp kann ein Nutzer, eine Gruppe oder ein Dienstkonto sein
  2. Führen Sie den folgenden Befehl aus, um die Rolle zuzuweisen:

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

Rollen einem Namespace zuweisen (abhängig vom Anwendungsfall)

Je nach Anwendungsfall weisen Sie Rollen mit den folgenden Befehlen zu:

  1. Exportieren Sie die folgenden Variablen mit dem folgenden Befehl und ersetzen Sie die Variablen durch Ihre eigenen Werte:

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

    Ersetzen Sie die folgenden Variablen durch Ihre eigenen Werte:

    • PROJECT_ID: der Name Ihres Projekts
    • INSTANCE_ID: der Name Ihrer Instanz
    • REGION: die Region, zu der das Projekt gehört
    • NAMESPACE: der Namespace-Name
    • EMAIL: die E-Mail-Adresse des Hauptkontos
    • USER_TYPE: der Nutzertyp kann ein Nutzer, eine Gruppe oder ein Dienstkonto sein
  2. Führen Sie den folgenden Befehl aus, um einem Hauptkonto in einem bestimmten Namespace eine Rolle zuzuweisen:

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

    Ersetzen Sie ROLE_NAME durch einen der folgenden Werte:

    • Verwenden Sie für die Bearbeiterrolle für einen Namespace datafusion.editor.
    • Verwenden Sie für die Operatorrolle für einen Namespace datafusion.operator.
    • Verwenden Sie für die Entwicklerrolle eines Namespace datafusion.developer.
    • Verwenden Sie für die Betrachterrolle eines Namespace datafusion.viewer.

Optional: Namespace-Rollen widerrufen

Verwenden Sie den folgenden Befehl, um einem Nutzer die Rolle für einen bestimmten Namespace zu entziehen:

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}"

Optional: Rollen auflisten, die für einen bestimmten Namespace gewährt wurden

Verwenden Sie den folgenden Befehl, um die IAM-Richtlinie abzurufen, um alle in einem bestimmten Namespace zugewiesenen Rollen aufzulisten:

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}

REST API

Rolle "Instanzzugriff" zuweisen (erforderlich)

Sie müssen einem Nutzer zuerst Zugriff auf die Instanz gewähren, indem Sie ihm die Rolle "Instanzzugriff" zuweisen.

Dringende Empfehlung: Verwenden Sie die gcloud CLI, um die Rolle „Accessor“ zuzuweisen.

  1. Weisen Sie die Rolle Instanzzugriff zu:

    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. Rufen Sie die aktuelle IAM-Richtlinie ab und speichern Sie sie in einer Datei:

    gcurl https://datafusion.googleapis.com/v1beta1/projects/${PROJECT}/locations/${REGION}/instances/${INSTANCE}:getIamPolicy > iam_policy.json
    
  3. Fügen Sie eine Bindung für die Rolle und den Nutzer in der Richtlinie hinzu. Beispiel:

    {
      "policy": {
        "bindings": [
          {
            "role": "roles/datafusion.accessor",
            "members": [
              "${USER_TYPE}:${USER_ID}"
            ]
          }
        ]
      }
    }
    
  4. Aktualisieren Sie die IAM-Richtlinie der Instanz:

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

Rollen einem Namespace zuweisen (abhängig vom Anwendungsfall)

Je nach Anwendungsfall weisen Sie Rollen mit den folgenden Befehlen zu:

  1. Exportieren Sie die folgenden Variablen mit dem folgenden Befehl und ersetzen Sie die Variablen durch Ihre eigenen Werte:

    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"'
    

    Ersetzen Sie die folgenden Variablen durch Ihre eigenen Werte:

    • PROJECT_ID: der Name Ihres Projekts
    • INSTANCE_ID: der Name Ihrer Instanz
    • REGION: die Region, zu der das Projekt gehört
    • NAMESPACE: der Namespace-Name
    • EMAIL: die E-Mail-Adresse des Hauptkontos
    • USER_TYPE: der Nutzertyp kann ein Nutzer, eine Gruppe oder ein Dienstkonto sein
  2. Rufen Sie die aktuelle IAM-Richtlinie ab und speichern Sie sie in einer Datei:

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

    Ersetzen Sie iam_policy.json durch Ihren eigenen Dateinamen.

  3. Fügen Sie eine Bindung für die Rolle und den Nutzer in der Richtliniendatei hinzu. Die Richtliniendatei könnte beispielsweise so aussehen:

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

    Für eine bestimmte Richtlinie können mehrere Rollenbindungen angegeben werden. In der Liste members können für eine bestimmte Rollenbindung mehrere Hauptkonten angegeben werden. Ersetzen Sie für ein bestimmtes Hauptkonto ROLE_NAME durch einen der folgenden Werte:

    • Verwenden Sie für die Bearbeiterrolle für einen Namespace datafusion.editor.
    • Verwenden Sie für die Operatorrolle für einen Namespace datafusion.operator.
    • Verwenden Sie für die Entwicklerrolle eines Namespace datafusion.developer.
    • Verwenden Sie für die Betrachterrolle eines Namespace datafusion.viewer.
  4. Führen Sie den folgenden Befehl aus, um die Richtliniendatei zu aktualisieren:

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

    Ersetzen Sie iam_policy.json durch Ihren eigenen Dateinamen.

Rollen in der Google Cloud Console prüfen

Prüfen und bearbeiten Sie vorhandene Rollen auf der Cloud Data Fusion-Seite Berechtigungen.

Zur Seite "Berechtigungen"

Rollen mit der Richtliniendatei prüfen

Prüfen Sie, ob die Rollen in der IAM-Datei Policy über die gcloud CLI oder die REST API den richtigen Nutzern zugewiesen wurden.

Im folgenden Beispiel für eine IAM-Richtliniendatei hat der Nutzer alice@example.com die Rolle "Data Fusion-Entwickler":

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=

IAM-Richtlinie für eine Instanz abrufen

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

IAM-Richtlinie für einen Namespace abrufen

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

Nächste Schritte