Establecimiento de autorizaciones de servicio a servicio para Block Storage for VPC

Crea autorizaciones de servicio a servicio entre Block Storage for VPC y Key Protect para el cifrado gestionado por el cliente, o con el servicio de copias de seguridad para instantáneas automáticas. Configura las autorizaciones de IAM para conceder los permisos de acceso necesarios.

Visión general

En una autorización, el servicio de origen es el servicio al que se otorga acceso al servicio de destino. Los roles que seleccione definen el nivel de acceso para el servicio de origen. El servicio de destino es el servicio al que otorga permiso para que acceda el servicio de origen en función de los roles que asigne. Por lo general, un servicio de origen puede estar en la misma cuenta en la que se crea la autorización o en otra cuenta. La autorización debe crearse en la cuenta propietaria del servicio de destino.

Para poder crear un volumen cifrado con CRK gestionadas por el cliente, debe establecer la autorización de servicio a servicio entre el servicio de bloqueo y el servicio de gestión de claves de su elección.

Los Hyper Protect Crypto Services han quedado obsoletos. Los clientes pueden utilizar las instancias existentes hasta el 20 de marzo de 2027. Para obtener más información, consulta IBM Cloud Hyper Protect Crypto Services: fin de la compatibilidad. Para garantizar una protección continua, plantéate migrar tus claves de cifrado actuales a una instancia dedicada de Key Protect. Para obtener más información, consulta la guía de migración.

Si desea crear instantáneas de copia de seguridad de los volúmenes Block Storage for VPC, el servicio de copia de seguridad debe estar autorizado para trabajar con los servicios Block Storage for VPC, Snapshots for VPC y Virtual Server for VPC. Para obtener más información, consulte Establecimiento de autorizaciones de servicio a servicio para el servicio de copia de seguridad.

Para obtener más información sobre las autorizaciones, consulta « Uso de autorizaciones para conceder acceso entre servicios y roles de usuario ».

Creación de autorización de servicio a servicio para el cifrado administrado por el cliente en la consola

Cuando la autorización es necesaria para el cifrado entre cuentas, la autorización debe crearse en la cuenta de destino propietaria de la clave de cifrado.

  1. En la consola de IBM Cloud, ve a Gestionar > Acceso (IAM).
  2. En el panel lateral, haga clic en Gestionar acceso y seleccione Autorizaciones.
  3. En la página Gestionar autorizaciones, pulse Crear.
  4. En la sección Origen, seleccione la Cuenta de origen. La cuenta de origen es donde se crearán los volúmenes de almacenamiento en bloque.
    • Si el objetivo es permitir que otra cuenta utilice un CRK de la cuenta de destino, seleccione Cuenta específica e introduzca el ID de cuenta de 32 caracteres. A continuación, pulse Siguiente.
    • De lo contrario, seleccione Esta cuenta. A continuación, pulse Siguiente.
  5. Para el servicio de origen, seleccione Cloud Block Storage de la lista. Pulse Siguiente.
    1. Seleccione el ámbito haciendo clic en Todos los recursos.
    2. Pulse Siguiente.
  6. Para el servicio de destino, selecciona KeyProtect en la lista.
  7. Selecciona la función Reader.
  8. Marque el recuadro para permitir que los servicios dependientes y de origen deleguen la autorización.
  9. Pulse Revisar e inspeccione sus opciones.
  10. Pulse Autorizar.

Creación de una autorización de servicio a servicio para la restauración entre cuentas en la consola

Los siguientes pasos autorizan al servicio Block Storage de una cuenta a utilizar una instantánea creada por otra cuenta para restaurar volúmenes. Los pasos deben ser realizados por la cuenta propietaria de la instantánea que se va a compartir. La cuenta receptora debe asegurarse de que su usuario admin tiene el rol SnapshotRemoteAccountRestorer en IAM antes de iniciar una restauración de volumen con el CRN de la instantánea compartida.

  1. En la página Gestionar autorizaciones, pulse Crear.
  2. En la página Conceder autorización de servicio, selecciona la cuenta de origen.
    1. Dado que el objetivo es permitir el uso de una instantánea de otra cuenta, seleccione Cuenta específica.
    2. Introduce el ID de cuenta de 32 caracteres.
    3. Pulse Siguiente.
  3. Para el servicio de origen, seleccione VPC Infrastructure Services de la lista. Pulse Siguiente.
    1. Seleccione el ámbito haciendo clic en Recursos específicos.
    2. Selecciona Tipo de recurso y Block Storage for VPC.
    3. Pulse Siguiente.
  4. Para el servicio de destino, seleccione Servicios de infraestructura VPC de la lista.
    1. Seleccione el ámbito haciendo clic en Recursos específicos.
    2. Haz clic en Seleccionar un atributo.
    3. En la lista, seleccione Tipo de recurso.
    4. En el siguiente campo, seleccione Block Storage Snapshots for VPC.
    5. Si desea restringir la autorización a una instantánea específica, haga clic en Añadir una condición.
      1. Haga clic en Seleccionar un atributo y seleccione ID de la instantánea.
      2. Introduce el ID de la instantánea. Pulse Siguiente
  5. Selecciona la función Snapshot Remote Account Restorer.
  6. Pulse Revisar e inspeccione sus opciones.
  7. Pulse Autorizar.

Creación de autorización de servicio a servicio para el cifrado gestionado por el cliente desde la CLI

Ejecuta el comando ibmcloud iam authorization-policy-create para crear políticas de autorización que permitan al servicio Block interactuar con Key Management Services ( Key Protect ). El servicio de origen es server-protect y el servicio de destino es kms. El rol que debe asignar es Reader. El siguiente ejemplo crea una política de autorización entre el servicio Block y Key Protect.

ibmcloud iam authorization-policy-create server-protect kms Reader
Creating authorization policy under account a1234567 as test.user@ibm.com...
OK

Para listar las autorizaciones de servicio que ya están en vigor para la cuenta, ejecute el mandato ibmcloud iam authorization-policies. El siguiente ejemplo muestra que el servicio Block puede cifrarse con un CRK almacenado en Key Protect o Hyper Protect Crypto Services.

ibmcloud iam authorization-policies
Getting authorization policies under account a1234567 as test.user@ibm.com...
OK
ID:                        1f722de4-c3e6-4765-b0d3-482ec77a04f8
Source service name:       server-protect
Source service instance:   All instances
Target service name:       kms
Target service instance:   51042d7f-f0df-4915-bd39-6a49957c9175
Roles:                     Reader

Para obtener más información sobre todos los parámetros que están disponibles para este mandato, consulte ibmcloud iam authorization-policy-create.

Creación de autorización de servicio a servicio para el cifrado entre cuentas desde la CLI

Cuando la autorización es necesaria para el cifrado entre cuentas, la autorización debe crearse en la cuenta de destino propietaria de la clave de cifrado. Ejecute el comando ibmcloud iam authorization-policy-create para crear políticas de autorización para que el servicio Block de la cuenta de origen pueda interactuar con Key Management Services ( Key Protect ) de la cuenta de destino. El servicio de origen es server-protect y el servicio de destino es kms. El rol que debe asignar es Reader. El siguiente ejemplo crea una política de autorización entre el servicio Block y Key Protect.

  1. Cree un archivo JSON con la siguiente información para las políticas de autorización en su carpeta local Documentos.
    '{
       "description":"Reader and Delegator role for KeyProtect service instance",
       "resources": [
          {"attributes":[
             {"name":"Account-A-CRK","operator":"stringEquals","value":"<CRK-Account-A-ID>"},
             {"name":"Hyper-Protect-Crypto-Services","operator":"stringEquals","value":"kms"}]}],
       "roles": [
          {"role_id":"crn:v1:bluemix:public:iam::::role:AuthorizationDelegator"},
          {"role_id":"crn:v1:bluemix:public:iam::::serviceRole:Reader"}],
       "subjects": [
          {"attributes": [
             {"name":"Cloud Block Storage","value":"server-protect"},
             {"name":"Account-B","value":"<Account-B-ID>"}]}],
       "type":"authorization",
    }'
    
  2. Luego, use los archivos JSON para ejecutar el siguiente comando CLI.
    ibmcloud iam authorization-policy-create --file ~/Documents/policy.json
    
    La autorización entre cuentas es unidireccional y específica para la clave y el servicio. Cuando la Cuenta A autoriza que su clave sea utilizada por el servicio de archivos de la Cuenta B, ésta puede utilizar el CRK de la Cuenta A para cifrar las acciones de la Cuenta B. Sin embargo, la cuenta A no puede utilizar las claves raíz de la cuenta B para cifrar los recursos compartidos de la cuenta A.

Creación de una autorización de servicio a servicio para la restauración entre cuentas desde la CLI

Cuando la autorización es necesaria para la restauración de datos entre cuentas, la autorización debe crearse en la cuenta de destino propietaria de la instantánea. Ejecute el comando ibmcloud iam authorization-policy-create para autorizar al servicio Block Storage de la cuenta de origen a utilizar una instantánea creada por la cuenta de destino para restaurar volúmenes. La cuenta receptora debe asegurarse de que su usuario admin tiene el rol SnapshotRemoteAccountRestorer en IAM antes de iniciar una restauración de volumen con el CRN de la instantánea compartida.

  1. Cree un archivo JSON con la siguiente información para las políticas de autorización en su carpeta local Documentos.
    '{
         "type":"authorization",
         "description":"Providing the Block Storage service access to restore from a Snapshot of another account ",
         "subjects": [{"attributes": [
                 {"name":"Block Storage for VPC","value":"server-protect"},
                 {"name":"Remote-restorer-account","value":"<Remote-Restorer-Account-ID>"}]}],
         "roles": [{"role_id":"crn:v1:bluemix:public:iam::::role:SnapshotRemoteAccountRestorer"}],
         "resources": [{"attributes": [
                 {"name":"Snaphot-owner-account","operator":"stringEquals","value":"<Snapshot-Owner-Account-ID>"},
                 {"name":"snapshotId","operator":"stringEquals","value":"*"}]}],
    }'
    
  2. Luego, use los archivos JSON para ejecutar el siguiente comando CLI.
    ibmcloud iam authorization-policy-create --file ~/Documents/policy.json
    

Creación de la autorización de servicio a servicio para el cifrado gestionado por el cliente con la API

Envía una solicitud a la API de gestión de políticas de IAM para crear la autorización de servicio a servicio que permita al servicio Block del volumen de origen interactuar con una instancia de Key Management Service.

  • El ejemplo siguiente muestra cómo puede autorizar al servicio de bloque is.server-protect (origen) para interactuar con el servicio Key Protect kms (destino) con el rol Lector .

    curl -X POST 'https://iam.cloud.ibm.com/v1/policies' -H
    'Authorization: Bearer $TOKEN' -H
    'Content-Type: application/json' -d
    '{
      "type":"access",
      "description":"Reader role for the Block service to interact with the KeyProtect service.",
      "subjects": [{"attributes":[{"name":"Cloud Block Storage","value":"server-protect"}]}],
      "roles":[{"role_id":"crn:v1:bluemix:public:iam::::role:Reader"}],
      "resources":[{"attributes": [{"name":"KeyProtect","value":"kms"}]}]
      }'
    

Creación de autorización de servicio a servicio para el cifrado entre cuentas con la API

Realice una solicitud a la API de gestión de políticas de IAM para crear la autorización de servicio a servicio que permita al servicio Block Storage de la cuenta de origen interactuar con una instancia del servicio de gestión de claves (Key Management Service) de la cuenta de destino. La solicitud debe realizarse desde la cuenta que posee la clave raíz del cliente en su KMS.

  • El siguiente ejemplo muestra cómo puede autorizar el servicio Bloquear.is.server-protect de una cuenta (fuente) para interactuar con elHyper Protect Crypto Services servicio hs-crypto de otra cuenta (objetivo) con el_ Lector_ y_ Delegado de autorización_ roles.

    curl -X POST "https://iam.cloud.ibm.com/v1/policies" \
      -H "Authorization: <Auth Token>" \
      -H 'Content-Type: application/json' \
      -d '{
         "type":"authorization",
         "description":"Reader and Delegator access to KeyProtect service instance",
         "subjects": [
           {"attributes":
             {"name":"Cloud Block Storage","value":"server-protect"},
             {"name":"Account-B","value":"<Account-B-ID>"}]}],
         "roles": [{"role_id":"crn:v1:bluemix:public:iam::::role:AuthorizationDelegator"},{"role_id":"crn:v1:bluemix:public:iam::::serviceRole:Reader"}],
         "resources": [
           {"attributes":[
             {"name":"Account-A-CRK","operator":"stringEquals","value":"<CRK-Account-A-ID>"},
             {"name":"Hyper-Protect-Crypto-Services","operator":"stringEquals","value":"kms"}]}],
         }'
    

La autorización entre cuentas es unidireccional y específica para la clave y el servicio. Cuando la Cuenta A autoriza que su clave sea utilizada por el servicio de archivos de la Cuenta B, ésta puede utilizar el CRK de la Cuenta A para cifrar las acciones de la Cuenta B. Sin embargo, la cuenta A no puede utilizar las claves raíz de la cuenta B para cifrar los recursos compartidos de la cuenta A.

Creación de una autorización de servicio a servicio para la restauración entre cuentas con la API

La siguiente solicitud de API autoriza al servicio Block Storage de la cuenta de origen a utilizar una instantánea creada por la cuenta de destino para restaurar volúmenes. Esta llamada debe realizarla la cuenta propietaria de la instantánea. La cuenta de origen receptora debe asegurarse de que su usuario admin tiene la función SnapshotRemoteAccountRestorer en IAM antes de iniciar una restauración de volumen con el CRN de la instantánea compartida.

curl -X POST "https://iam.cloud.ibm.com/v1/policies"\
   -H 'Content-Type: application/json\
   -d '{
        "type":"authorization",
        "description":"Providing the Block Storage service access to restore from a Snapshot of another account ",
        "subjects": [{"attributes": [
                {"name":"BCloud Block Storage","value":"server-protect"},
                {"name":"Remote-restorer-account","value":"<Remote-Restorer-Account-ID>"}]}],
        "roles": [{"role_id":"crn:v1:bluemix:public:iam::::role:SnapshotRemoteAccountRestorer"}],
        "resources": [{"attributes": [
                {"name":"Snaphot-owner-account","operator":"stringEquals","value":"<Snapshot-Owner-Account-ID>"},
                {"name":"snapshotId","operator":"stringEquals","value":"*"}]}],
   }'

Cuando quieras restringir el acceso a una instantánea concreta, utiliza el ID de la instantánea en lugar de * al definir tus recursos.

Creación de autorización de servicio a servicio para el cifrado gestionado por el cliente con Terraform

Cree una política de autorización entre el servicio de bloqueo y los servicios de gestión de claves utilizando el argumento de recurso ibm_iam_authorization_policy en el archivo main.tf.

El ejemplo siguiente crea una política de autorización entre el servicio de bloque y Key Protect cuando se aplica.

resource "ibm_iam_authorization_policy" "mypolicy4keyprotect" {
  source_service_name  = "server-protect"
  target_service_name  = "kms"
  roles                = ["Reader"]
}

Para obtener más información sobre los argumentos y atributos, consulte la documentación de Terraform para recursos de autorización.

Creación de autorización de servicio a servicio para cifrado entre cuentas con Terraform

  1. Terraform admite la configuración de dos cuentas diferentes paraIBM proveedor. El proveedor sin alias se considera el proveedor por defecto. Vea el siguiente ejemplo, en el que se especifican dos cuentas IBM y la segunda cuenta utiliza el alias team_account. Esta configuración debe denominarse ibm.team_account más tarde.

    terraform {
      required_providers {
        ibm = {
          source = "IBM-Cloud/ibm"
          version = ">= 1.12.0"
        }
      }
    }
    provider "ibm" {
      ibmcloud_api_key = var.ibmcloud_api_key
      region           = var.region
      ibmcloud_timeout = var.ibmcloud_timeout
    }
    provider "ibm" {
      alias = "team_account"
      ibmcloud_api_key = var.ibmcloud_api_key_second_account
      region           = var.region
      ibmcloud_timeout = var.ibmcloud_timeout
    }
    

    Para obtener más información sobre los argumentos y atributos, consulte IBM Cloud proveedor.

  2. Para crear la autorización de IAM entre el servicio de administración de claves de una cuenta y el servicio de almacenamiento en bloque en una cuenta diferente, use el recurso ibm_iam_authorization_policy. El siguiente ejemplo crea una autorización entre un servicio de Key Protect y el servicio de archivos de las dos cuentas.

    resource "ibm_iam_authorization_policy" "policy" {
        source_service_name = "server-protect"
        source_service_account = "<volume-account-id>"
        target_service_name = "kms"
        target_resource_instance_id = ibm_kms_key.key.instance_id
        roles               = ["Reader", "Authorization Delegator"]
        description         = "Authorization Policy"
    }
    

    Este recurso de terraform también debe incluir el alias del proveedor (en nuestro ejemplo,ibm.team_account ) con la cuenta ibmcloud_api_key donde pertenece la clave de cifrado.

    Para obtener más información sobre los argumentos y atributos, consulte ibm_iam_authorization_policy.

Creación de una autorización de servicio a servicio para la restauración entre cuentas Terraform

  1. Configure las dos cuentas IBM para el proveedor IBM. Consulte el ejemplo de la sección anterior.

  2. Para crear la autorización de IAM para que el servicio Block Storage de una cuenta utilice una instantánea creada por otra cuenta para restaurar volúmenes, utilice el recurso ibm_iam_authorization_policy.

    resource "ibm_iam_authorization_policy" "policy" {
        source_service_name = "server-protect"
        source_service_account = "<volume-account-id>"
        target_service_name = "ibm_is_snapshot"
        target_resource_instance_id = ibm_is_snapshot.snapshot.instance_id
        target_service_account = "<snapshot-account-id>"
        roles               = ["SnapshotRemoteAccountRestorer"]
        description         = "Authorization Policy"
    }
    

    Este recurso de terraform también debe incluir el alias del proveedor (en nuestro ejemplo,ibm.team_account ) con la cuenta ibmcloud_api_key donde pertenece la clave de cifrado.

    Para obtener más información sobre los argumentos y atributos, consulte ibm_iam_authorization_policy.

Próximos pasos