Soluciona problemas de errores de permisos en Copia de seguridad para GKE


En esta página, se describen los errores de permisos que puedes encontrar cuando usas la Copia de seguridad para GKE, los aspectos que debes tener en cuenta cuando realizas la acción y cómo resolver el error.

Error 100010101: No se pudo crear una copia de seguridad de PersistentVolumeClaim. Falta la vinculación de IAM para el proyecto del arrendatario.

El error 100010101 se produce cuando falla un intento de crear una copia de seguridad de un PersistentVolumeClaim debido a que falta una vinculación de Identity and Access Management para tu proyecto de arrendatario, lo que genera un mensaje de error que indica Failed to backup PersistentVolumeClaim - Missing IAM binding for tenant project.

Backup for GKE crea instantáneas del disco persistente de tu clúster de GKE. Las instantáneas residen en tu proyecto Google Cloud , también conocido como proyecto de consumidor, y Google Cloud las crea dentro de un proyecto de inquilino que administra. El proyecto de arrendatario existe dentro de la organización google.com, separado de tu propia organización.

El agente de servicio dentro del proyecto del arrendatario requiere permisos específicos para usar la clave de encriptación administrada por el cliente (CMEK) que encripta el disco persistente al que hace referencia el PersistentVolumeClaim de tu clúster. Este permiso encripta y desencripta los datos de la instantánea. Si el agente de servicio de service-TENANT_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com no tiene el rol de roles/cloudkms.cryptoKeyEncrypterDecrypter en la CMEK de tu disco, la operación de copia de seguridad fallará.

Para resolver este error, sigue estas instrucciones:

  1. Verifica que tengas los permisos de IAM suficientes para modificar las políticas de IAM en la clave de Cloud Key Management Service en la consola de Google Cloud , como roles/cloudkms.admin o roles/owner.

  2. Ubica el agente de servicio de Compute Engine del proyecto de arrendatario con el valor TENANT_PROJECT_NUMBER que se encuentra en el mensaje status reason de la operación de copia de seguridad fallida. Por ejemplo, service-TENANT_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com.

  3. Ubica la siguiente información de CMEK que se usa para tu disco persistente encriptado:

    • Nombre de la clave: Es el nombre de tu clave de encriptación.

    • Llavero de claves: Es el nombre del llavero de claves en el que se encuentra tu clave.

    • Ubicación: Es la ubicación Google Cloud en la que se encuentra tu llave. Por ejemplo: global o us-central1.

  4. Para otorgar al agente de servicio de Compute Engine del proyecto de arrendatario el rol roles/cloudkms.cryptoKeyEncrypterDecrypter en tu CMEK, ejecuta el comando gcloud kms keys add-iam-policy-binding con Google Cloud CLI:

    gcloud kms keys add-iam-policy-binding KEY_NAME \
        --keyring KEY_RING \
        --location LOCATION \
        --member "serviceAccount:service-TENANT_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com" \
        --role roles/cloudkms.cryptoKeyEncrypterDecrypter
    

    Reemplaza lo siguiente:

    • KEY_NAME: Es el nombre de tu clave de encriptación.

    • KEY_RING: es el nombre del llavero de claves.

    • LOCATION: Es la Google Cloud ubicación de tu llave. Por ejemplo: global o us-central1.

    • TENANT_PROJECT_NUMBER: Es el número del proyecto de usuario que obtuviste del mensaje status reason de tu operación de copia de seguridad fallida.

    Si el comando se ejecuta correctamente, el resultado es similar al siguiente:

    - members:
    - serviceAccount:service-987654321098@compute-system.iam.gserviceaccount.com
    role: roles/cloudkms.cryptoKeyEncrypterDecrypter
    
  5. Vuelve a probar la operación de copia de seguridad. Si la operación sigue sin completarse, comunícate con Atención al cliente de Cloud para obtener más ayuda.

Error 100010104: No se pudo crear una copia de seguridad de PersistentVolumeClaim. Se incumplió la restricción de la política de la organización durante la creación de la instantánea.

El error 100010104 se produce cuando falla un intento de crear una copia de seguridad de un PersistentVolumeClaim debido a un incumplimiento de la restricción de la política de la organización durante la creación de la instantánea, lo que genera un mensaje de error que indica Failed to backup PersistentVolumeClaim - Org policy constraint violation while creating snapshot.

Backup for GKE crea instantáneas del disco persistente de tu clúster de GKE. Las instantáneas residen en tu proyecto Google Cloud , también conocido como proyecto de consumidor, y se crean dentro de un proyecto de usuario administrado por Google Cloud. El proyecto de arrendatario existe dentro de la organización google.com, separado de tu propia organización.

La política de la organización determina dónde puedes crear recursos de almacenamiento. El error Constraint constraints/compute.storageResourceUseRestrictions violated significa que un recurso o una instantánea incumplen la política porque se crearon en un proyecto de inquilino que no forma parte de la estructura organizativa permitida. Dado que el proyecto del arrendatario se encuentra dentro de la organización de Google, queda fuera de la política que definiste, lo que provoca la falla de la copia de seguridad.

Para resolver este error, sigue estas instrucciones:

  1. Ubica la política de la organización que implementa la restricción constraints/compute.storageResourceUseRestrictions. Para obtener más información sobre cómo ver las políticas de la organización con la consola de Google Cloud , consulta Visualiza las políticas de la organización.

  2. Modifica la política de constraints/compute.storageResourceUseRestrictions para incluir la carpeta del proyecto del arrendatario folders/77620796932 que usa Backup for GKE en su lista de entidades permitidas.

  3. Guarda los cambios en la política después de agregar la carpeta a la lista de entidades permitidas.

  4. Vuelve a probar la operación de copia de seguridad después de que se actualice y propague la política de la organización, lo que suele tardar unos minutos. La copia de seguridad debe continuar sin incumplir las restricciones de uso de recursos de almacenamiento. Si la operación sigue sin completarse, comunícate con Atención al cliente de Cloud para obtener más ayuda.

Error 100010106: No se pudo crear una copia de seguridad del PVC. Falta la vinculación de IAM para el agente de servicio de Copia de seguridad para GKE

El error 100010106 se produce cuando falla un intento de crear una copia de seguridad de un PersistentVolumeClaim debido a que falta una vinculación de Identity and Access Management para tu agente de servicio de Backup for GKE, lo que genera un mensaje de error que indica Failed to backup PVC - Missing IAM binding for Backup for GKE service agent.

Backup for GKE requiere permisos para usar la clave de encriptación administrada por el cliente (CMEK) de tu BackupPlan para encriptar y desencriptar volúmenes de discos persistentes. Cuando el agente de servicio de Copia de seguridad para GKE no tiene el rol de roles/cloudkms.cryptoKeyEncrypterDecrypter en tu CMEK de BackupPlan, fallan las operaciones de copia de seguridad.

Para resolver este error, sigue estas instrucciones:

  1. Identifica el agente de servicio de Copia de seguridad para GKE administrado por Google específico para tu proyecto. Por ejemplo, service-PROJECT_NUMBER@gcp-sa-gkebackup.iam.gserviceaccount.com. Puedes encontrar el número de tu proyecto con los siguientes métodos:

    • Usa el panel del proyecto de Google Cloud en la consola de Google Cloud .

    • Ejecuta el comando gcloud projects describe con Google Cloud CLI:

      gcloud projects describe PROJECT_ID –format="value(projectNumber)"
      

      Reemplaza PROJECT_ID por el nombre único de tu proyecto.

  2. Identifica los siguientes detalles de CMEK:

    • Nombre de la clave: Es el nombre de tu clave de encriptación.

    • Llavero de claves: Es el nombre del llavero de claves en el que se encuentra tu clave.

    • Ubicación: Es la ubicación Google Cloud en la que se encuentra tu CMEKBackupPlan. Por ejemplo: global o us-central1.

  3. Para otorgarle al agente de servicio de Copia de seguridad para GKE el rol roles/cloudkms.cryptoKeyEncrypterDecrypter en tu CMEK, usa Google Cloud CLI para ejecutar el comando gcloud kms keys add-iam-policy-binding:

    gcloud kms keys add-iam-policy-binding KEY_NAME \
        --keyring KEY_RING \
        --location LOCATION \
        --member "serviceAccount:service-PROJECT_NUMBER@gcp-sa-gkebackup.iam.gserviceaccount.com" \
        --role roles/cloudkms.cryptoKeyEncrypterDecrypter
    

    Reemplaza lo siguiente:

    • KEY_NAME: Es el nombre de tu clave de encriptación.

    • KEY_RING: es el nombre del llavero de claves.

    • LOCATION: Es la Google Cloud ubicación de tu llave. Por ejemplo: global o us-central1.

    • PROJECT_NUMBER: Es el número de tu proyecto de Google Cloud .

  4. Verifica que tengas los permisos de Identity and Access Management necesarios en la clave de Cloud Key Management Service. Por ejemplo, roles/cloudkms.admin o roles/owner.

  5. Verifica que tengas los permisos otorgados. En el resultado del comando gcloud kms keys add-iam-policy-binding anterior, busca una entrada similar a la siguiente:

    -members:
    -serviceAccount:service-123456789012@gcp-sa-gkebackup.iam.gserviceaccount.com
    role: roles/cloudkms.cryptoKeyEncrypterDecrypter
    
  6. Vuelve a probar la operación de copia de seguridad después de otorgar los permisos necesarios. Si la operación no se completa correctamente, comunícate con Atención al cliente de Cloud para obtener más ayuda.

Error 100010107: No se pudo crear una copia de seguridad del PVC. Falta la vinculación de IAM de la cuenta de servicio del agente (KCP).

El error 100010107 se produce cuando intentas realizar una operación de copia de seguridad de Copia de seguridad para GKE y el agente de servicio del clúster de Google Kubernetes Engine no tiene acceso a tu clave de encriptación administrada por el cliente (CMEK), lo que genera un mensaje que indica Failed to backup PVC - Missing IAM binding - agent service account (KCP).

El agente de servicio del clúster de Google Kubernetes Engine, que suele tener el formato service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com, es fundamental para que tu clúster de GKE interactúe con los servicios de Google Cloud. Cuando tu plan de copias de seguridad usa una clave de encriptación administrada por el cliente (CMEK) Este agente de servicio necesita permisos para encriptar y desencriptar los datos de tu copia de seguridad con tu CMEK. Si el plan de copias de seguridad no tiene el rol roles/cloudkms.cryptoKeyEncrypterDecrypter en tu CMEK, las operaciones de copias de seguridad iniciadas desde el clúster fallarán con un error permission denied.

Para resolver este error, sigue estas instrucciones:

  1. Verifica que tengas los permisos correctos para modificar las políticas de IAM en la clave de Cloud Key Management Service. Por ejemplo, cloudkms.admin o roles/owner.

  2. Identifica el agente de servicio del clúster de Google Kubernetes Engine. Google Cloud crea y administra automáticamente este agente de servicio para tus clústeres de GKE. Por ejemplo, service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com Necesitas el número de proyecto para crear la cuenta de servicio completa. Puedes encontrar el número de tu proyecto con uno de los siguientes métodos:

    • Usa el panel del proyecto de Google Cloud en la consola de Google Cloud .

    • Ejecuta el comando gcloud projects describe con Google Cloud CLI:

      gcloud projects describe PROJECT_ID –-format="value(projectNumber)"
      

      Reemplaza PROJECT_ID con el ID del proyecto.

  3. Ubica la siguiente información de la CMEK:

    • Nombre de la clave: Es el nombre de tu clave de encriptación.

    • Llavero de claves: Es el nombre del llavero de claves en el que se encuentra tu clave.

    • Ubicación: Es la ubicación Google Cloud en la que se encuentra tu llave. Por ejemplo: global o us-central1.

  4. Otorga el rol roles/cloudkms.cryptoKeyEncrypterDecrypter a nivel de CMEK. El agente de servicio de Google Kubernetes Engine necesita permisos en tu clave de encriptación. Para otorgar el rol roles/cloudkms.cryptoKeyEncrypterDecrypter en tu CMEK, usa Google Cloud CLI para ejecutar el comando gcloud kms key add-iam-policy-binding:

    gcloud kms keys add-iam-policy-binding KEY_NAME \
        --keyring KEY_RING \
        --location LOCATION \
        --member "serviceAccount:service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com" \
        --role roles/cloudkms.cryptoKeyEncrypterDecrypter
    

    Reemplaza lo siguiente:

    • KEY_NAME: Es el nombre de tu clave de encriptación.

    • KEY_RING: es el nombre del llavero de claves.

    • LOCATION: Es la Google Cloud ubicación de tu llave. Por ejemplo: global o us-central1.

    • PROJECT_NUMBER: el nombre del proyecto.

    El resultado es similar a este:

     - members:
     - serviceAccount:service-123456789012@container-engine-robot.iam.gserviceaccount.com
     role: roles/cloudkms.cryptoKeyEncrypterDecrypter
     ```
    
  5. Vuelve a intentar la operación de Copia de seguridad para GKE. Si la operación sigue fallando, comunícate con Atención al cliente de Cloud para obtener más ayuda.

¿Qué sigue?