Usa el control de acceso basado en funciones

En esta página, se describe cómo comenzar a usar el control de acceso basado en funciones (RBAC) en instancias de Cloud Data Fusion. RBAC está disponible en instancias de Cloud Data Fusion que se ejecutan en las versiones 6.5 y posteriores.

Para obtener más información, consulta la descripción general del control de acceso según la función (RBAC).

Recomendado: A menos que sea necesario para fines de automatización, se recomienda usar Google Cloud Console a fin de realizar tus tareas de RBAC.

Habilita el RBAC para una instancia existente

Puedes habilitar RBAC para una instancia existente de Cloud Data Fusion, siempre que la instancia se ejecute en la versión 6.5 o posterior.

Console

Para habilitar RBAC en una instancia existente de Cloud Data Fusion, haz lo siguiente:

  1. En Google Cloud Console, ve a la página Instancias de Cloud Data Fusion.

    Ir a Instancias

  2. Selecciona la instancia deseada.

    Se abre la página Detalles de la instancia.

  3. Asegúrate de que la instancia se haya actualizado a la versión 6.5 o posterior. Si la instancia es anterior a la versión 6.5, actualízala a la versión 6.5 o posterior.

  4. Haz clic en Habilitar RBAC.

  5. Haz clic en Guardar.

  6. Espera a que se complete la operación de actualización de instancias.

API de REST

Puedes habilitar RBAC para una instancia existente con la API de parche de Cloud Data Fusion. Establece la marca enableRbac en true y usa el parámetro de consulta updateMask mediante el siguiente comando de ejemplo:

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

Inhabilita el RBAC para una instancia existente

Si tienes una instancia existente con RBAC habilitado, puedes inhabilitar RBAC si es necesario. La inhabilitación de RBAC no afecta ninguna canalización o configuración existente en la instancia. Solo inhabilita el aislamiento de seguridad en los espacios de nombres.

Console

Para inhabilitar RBAC en una instancia existente de Cloud Data Fusion, haz lo siguiente:

  1. Ve a la página Instancias de Cloud Data Fusion.

    Ir a Instancias

  2. Selecciona la instancia deseada.

    Se abre la página Detalles de la instancia.

  3. Haz clic en Inhabilitar RBAC.

  4. Haz clic en Guardar.

  5. Espera a que se complete la operación de actualización de instancias.

API de REST

Puedes inhabilitar RBAC para una instancia existente con la API de parche de Cloud Data Fusion. Establece la marca enableRbac en false y usa el parámetro de consulta updateMask mediante el siguiente comando de ejemplo:

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

Cree una instancia nueva con RBAC habilitado

Puedes agregar RBAC a nuevas instancias de Cloud Data Fusion.

Console

Para crear una instancia de Cloud Data Fusion nueva con RBAC habilitado, sigue estos pasos:

  1. Ve a la página Instancias de Cloud Data Fusion.

    Ir a Instancias

  2. Haz clic en Crear una instancia y, luego, ingresa sus detalles.

  3. Selecciona la edición Enterprise. RBAC solo es compatible con la edición empresarial.

  4. En Opciones avanzadas, selecciona Habilitar el control de acceso detallado según la función.

    Esta función solo está disponible en instancias que usan la versión 6.5 y posteriores de Cloud Data Fusion.

  5. Haga clic en Crear.

API de REST

Para crear una instancia habilitada para RBAC mediante la API de REST, pasa la marca enableRbac configurada como true en las opciones de la instancia como se muestra en los siguientes comandos:

export PROJECT=PROJECT_ID
export LOCATION=REGION
export INSTANCE=INSTANCE
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"}'

Otorga funciones predefinidas de Cloud Data Fusion a los usuarios (obligatorio)

Después de RBAC habilitado, otorga funciones a los principales para permitirles realizar acciones específicas en una instancia o un espacio de nombres. Para decidir qué funciones se adaptan mejor a tus requisitos, consulta las funciones predefinidas de Cloud Data Fusion y las recomendaciones de seguridad.

Console

Para otorgar funciones predefinidas de Cloud Data Fusion a las principales, sigue estos pasos:

  1. Ve a la página Permisos de Cloud Data Fusion.

    Ir a Permisos

  2. Haz clic en Add .

    Se abrirá la ventana Agregar acceso de los usuarios.

  3. En el campo Miembros nuevos, ingresa una lista de principales (usuarios, grupos o correos electrónicos de cuentas de servicio) a los que deseas otorgar funciones.

  4. Selecciona la casilla junto a cada instancia a la que deseas otorgar estos permisos.

    Seleccionar instancias

  5. Ve a la columna Función y selecciona el cuadro desplegable junto a las instancias deseadas.

    1. Para otorgar los permisos de administrador de instancias, selecciona Administrador de instancias.

    2. Para otorgar permisos a nivel de espacio de nombres, selecciona Usuario de espacio de nombres.

      Selecciona las funciones del usuario de espacio de nombres

      1. Si otorgas permisos a nivel de espacio de nombres, haz clic en SELECT.

        Se abrirá la ventana Agregar derechos de acceso.

      2. Selecciona un espacio de nombres y selecciona la función predefinida de Cloud Data Fusion que deseas otorgar para el espacio de nombres.

      3. Haz clic en SELECCIONAR para guardar la nueva configuración.

      4. (Opcional) Si quieres otorgar permisos al espacio de nombres para otras instancias, repite el paso 5.

  6. Haz clic en Guardar.

    Para verificar las funciones que se otorgaron, consulta Verifica las funciones en Google Cloud Console.

gcloud

Puedes usar la herramienta de línea de comandos de gcloud para controlar el acceso de manera programática.

Para otorgar una función mediante la herramienta de gcloud, usa una lista delimitada por comas de identificadores de usuario en el siguiente formato:

[user|group|serviceAccount][email_address]

Ingresa los siguientes valores:

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

Para obtener más ejemplos, consulta Otorga una función.

Otorga la función de descriptor de acceso a las instancias (obligatorio)

Para otorgarle a un usuario acceso a la instancia, primero debes otorgarle la función de descriptor de acceso en una instancia:

  1. Exporta las siguientes variables con el siguiente comando y reemplaza las variables por tus propios valores:

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

    Reemplaza las siguientes variables por tus propios valores:

    • PROJECT_ID: Es el nombre del proyecto.
    • INSTANCE_ID: El nombre de la instancia
    • REGION: Es la región a la que pertenece el proyecto.
    • EMAIL: La dirección de correo electrónico del principal.
    • USER_TYPE: El tipo de usuario puede ser uno de usuario, grupo o serviceAccount.
  2. Ejecuta el siguiente comando para asignar la función:

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

Otorga funciones a un espacio de nombres (depende del caso de uso)

Según tu caso de uso, otorga funciones con los siguientes comandos:

  1. Exporta las siguientes variables con el siguiente comando y reemplaza las variables por tus propios valores:

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

    Reemplaza las siguientes variables por tus propios valores:

    • PROJECT_ID: Es el nombre del proyecto.
    • INSTANCE_ID: El nombre de la instancia
    • REGION: Es la región a la que pertenece el proyecto.
    • NAMESPACE: El nombre del espacio de nombres.
    • EMAIL: La dirección de correo electrónico del principal.
    • USER_TYPE: El tipo de usuario puede ser uno de usuario, grupo o serviceAccount.
  2. Ejecuta el siguiente comando para asignar una función a una principal en un espacio de nombres determinado:

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

    Reemplaza ROLE_NAME por uno de los siguientes valores:

    • Para la función de editor de un espacio de nombres, usa datafusion.editor
    • Para la función de operador de un espacio de nombres, usa datafusion.operator.
    • Para la función de desarrollador de un espacio de nombres, usa datafusion.developer.
    • Para la función de visualizador de un espacio de nombres, usa datafusion.viewer

Revoca las funciones de espacio de nombres (opcional)

Para revocar la función otorgada a un usuario para un espacio de nombres determinado, usa el siguiente 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}"

Enumera las funciones otorgadas en un espacio de nombres determinado (opcional)

Puedes enumerar todas las funciones otorgadas en un espacio de nombres en particular mediante el siguiente comando para recuperar la política de 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 de REST

Otorga la función de descriptor de acceso a las instancias (obligatorio)

Para otorgarle acceso a un usuario a la instancia, primero debes otorgarle la función de descriptor de acceso en una instancia.

Muy recomendado: En su lugar, usa la herramienta de gcloud para otorgar la función de descriptor de acceso.

  1. Otorga la función de descriptor de acceso a una instancia:

    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)"'
    
  2. Recupera la política de IAM actual y guárdala en un archivo:

    gcurl https://datafusion.googleapis.com/v1beta1/projects/${PROJECT}/locations/${REGION}/instances/${INSTANCE_ID}:getIamPolicy > iam_policy.json
    
  3. Agrega una vinculación para la función y el usuario en la política. Por ejemplo:

    {
      "policy": {
        "bindings": [
          {
            "role": "roles/datafusion.accessor",
            "members": [
              "${USER_TYPE}:${USER_ID}"
            ]
          }
        ]
      }
    }
    gcurl
      -d @iam_policy.json \
      https://datafusion.googleapis.com/v1beta1/projects/${PROJECT}/locations/${REGION}/instances/${INSTANCE_ID}:setIamPolicy
    

Otorga funciones a un espacio de nombres (depende del caso de uso)

Según tu caso de uso, otorga funciones con los siguientes comandos:

  1. Exporta las siguientes variables con el siguiente comando y reemplaza las variables por tus propios valores:

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

    Reemplaza las siguientes variables por tus propios valores:

    • PROJECT_ID: Es el nombre del proyecto.
    • INSTANCE_ID: El nombre de la instancia
    • REGION: Es la región a la que pertenece el proyecto.
    • NAMESPACE: El nombre del espacio de nombres.
    • EMAIL: La dirección de correo electrónico del principal.
    • USER_TYPE: El tipo de usuario puede ser uno de usuario, grupo o serviceAccount.
  2. Recupera la política de IAM actual y guárdala en un archivo:

      gcurl https://datafusion.googleapis.com/v1beta1/projects/${PROJECT}/locations/${REGION}/instances/${INSTANCE}:getIamPolicy > iam_policy.json
      ```
    
    Replace iam_policy.json with your own file name.
    
  3. Agrega una vinculación para la función y el usuario en el archivo de políticas. Por ejemplo, el archivo de política puede verse de la siguiente manera:

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

Se pueden especificar varias vinculaciones de funciones para una política determinada y se pueden especificar varios principales en la lista miembros para una vinculación de función determinada. Para una principal determinada, reemplaza ROLE_NAME por uno de los siguientes valores:

  • Para la función de editor de un espacio de nombres, usa datafusion.editor
  • Para la función de operador de un espacio de nombres, usa datafusion.operator.
  • Para la función de desarrollador de un espacio de nombres, usa datafusion.developer.
  • Para la función de visualizador de un espacio de nombres, usa datafusion.viewer
  1. Ejecuta el siguiente comando para actualizar el archivo de política:

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

    Reemplaza iam_policy.json por el nombre de tu archivo.

Verificar funciones en Google Cloud Console

Puedes revisar y editar las funciones existentes en la página Permisos de Cloud Data Fusion.

Ir a Permisos

Verifique las funciones con el archivo de política

Puedes verificar las funciones que se otorgan a los usuarios correctos en el archivo Policy de IAM mediante la herramienta de gcloud o la API de REST.

En el siguiente ejemplo de archivo de política de IAM, el usuario alice@example.com tiene la función de desarrollador de 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=

Obtener la política de IAM para una instancia

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

Obtener la política de IAM para un espacio de nombres

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

¿Qué sigue?