Etablissement d'autorisations de service à service pour Block Storage for VPC

Créez des autorisations de service à service entre Block Storage for VPC et Key Protect pour le chiffrement géré par le client, ou avec le service de sauvegarde pour les instantanés automatisés. Configurez les autorisations IAM afin d'accorder les droits d'accès requis.

Présentation

Dans une autorisation, le service source est le service qui est autorisé à accéder au service cible. Les rôles que vous sélectionnez définissent le niveau d'accès pour le service source. Le service cible est le service auquel vous accordez l'accès par le service source, en fonction des rôles affectés. En règle générale, un service source peut se trouver dans le même compte que celui où l'autorisation a été créée ou dans un autre compte. L'autorisation doit être créée dans le compte qui possède le service cible.

Pour pouvoir créer un volume chiffré avec des CRK gérés par le client, vous devez établir une autorisation de service à service entre le service de blocage et le service de gestion de clés de votre choix.

Les Hyper Protect Crypto Services sont obsolètes. Les clients peuvent utiliser les instances existantes jusqu'au 20 mars 2027. Pour plus d'informations, consultez la section Abandon de la fonctionnalité IBM Cloud Hyper Protect Crypto Services. Pour une protection continue, envisagez de migrer vos clés de chiffrement existantes vers une instance dédiée d' Key Protect. Pour plus d'informations, consultez le guide de migration.

Si vous souhaitez créer des instantanés de sauvegarde de vos volumes Block Storage for VPC, le service de sauvegarde doit être autorisé à utiliser les services Block Storage for VPC, Snapshots for VPC et Virtual Server for VPC. Pour plus d'informations, voir Etablissement d'autorisations de service à service pour le service de sauvegarde.

Pour plus d'informations sur les autorisations, consultez la section « Utilisation des autorisations pour accorder l'accès entre les services et les rôles utilisateur ».

Création d'une autorisation de service à service pour le chiffrement géré par le client dans la console

Lorsque l'autorisation est nécessaire pour le chiffrement entre comptes, elle doit être créée dans le compte cible qui possède la clé de chiffrement.

  1. Dans la console d' IBM Cloud, accédez à Gérer > Accès (IAM).
  2. Dans le panneau latéral, cliquez sur Gérer l'accès et sélectionnez Autorisations.
  3. Sur la page Gérer les autorisations, cliquez sur Créer.
  4. Dans la section Source, sélectionnez le compte source. Le compte source est l'endroit où les volumes de stockage par blocs doivent être créés.
    • Si l'objectif est de permettre à un autre compte d'utiliser un CRK du compte cible, sélectionnez Compte spécifique et saisissez l'ID du compte (32 caractères). Ensuite, cliquez sur Suivant.
    • Sinon, sélectionnez Ce compte. Ensuite, cliquez sur Suivant.
  5. Pour le service source, sélectionnez Cloud Block Storage dans la liste. Cliquez sur Suivant.
    1. Sélectionnez l'étendue en cliquant sur Toutes les ressources.
    2. Cliquez sur Suivant.
  6. Pour le service concerné, sélectionnez KeyProtect dans la liste.
  7. Sélectionnez le rôle Reader.
  8. Cochez cette case pour permettre la délégation de l'autorisation par les services source et dépendants.
  9. Cliquez sur Vérifier et examinez vos choix.
  10. Cliquez sur Autoriser.

Création d'une autorisation de service à service pour la restauration inter-comptes dans la console

Les étapes suivantes autorisent le service Block Storage d'un compte à utiliser un instantané créé par un autre compte pour restaurer des volumes. Les étapes doivent être exécutées par le compte propriétaire de l'instantané à partager. Le compte destinataire doit s'assurer que son utilisateur admin a le rôle SnapshotRemoteAccountRestorer dans IAM avant de lancer une restauration de volume avec le CRN de l'instantané partagé.

  1. Sur la page Gérer les autorisations, cliquez sur Créer.
  2. Sur la page Accorder une autorisation de service, sélectionnez le compte source.
    1. L'objectif étant de permettre l'utilisation d'un instantané provenant d'un autre compte, sélectionnez un Compte spécifique.
    2. Saisissez l'identifiant de compte de 32 caractères.
    3. Cliquez sur Suivant.
  3. Pour le service source, sélectionnez VPC Infrastructure Services dans la liste. Cliquez sur Suivant.
    1. Sélectionnez le champ d'application en cliquant sur Ressources spécifiques.
    2. Sélectionnez le type de ressource, puis Block Storage for VPC.
    3. Cliquez sur Suivant.
  4. Pour le service cible, sélectionnez VPC Infrastructure Services dans la liste.
    1. Sélectionnez le champ d'application en cliquant sur Ressources spécifiques.
    2. Cliquez sur Sélectionner un attribut.
    3. Dans la liste, sélectionnez Type de ressource.
    4. Dans le champ suivant, sélectionnez Block Storage Snapshots for VPC.
    5. Si vous souhaitez limiter l'autorisation à un cliché spécifique, cliquez sur Ajouter une condition.
      1. Cliquez sur Sélectionner un attribut et sélectionnez Identification de l'instantané.
      2. Saisissez l'ID de l'instantané. Cliquez sur Suivant
  5. Sélectionnez le rôle Snapshot Remote Account Restorer.
  6. Cliquez sur Vérifier et examinez vos choix.
  7. Cliquez sur Autoriser.

Création d'une autorisation de service à service pour le chiffrement géré par le client à partir de l'interface de ligne de commande

Exécutez la commande ibmcloud iam authorization-policy-create pour créer des politiques d'autorisation permettant au service Block d'interagir avec Key Management Services ( Key Protect ). Le service source est server-protect et le service cible est kms. Le rôle que vous devez attribuer est Reader. L'exemple suivant crée une politique d'autorisation entre le service Block et Key Protect.

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

Pour répertorier les autorisations de service déjà en place pour le compte, exécutez la commande ibmcloud iam authorization-policies. L'exemple suivant montre que le service Block peut être crypté avec un CRK stocké dans Key Protect ou 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

Pour plus de détails sur les paramètres disponibles de cette commande, voir ibmcloud iam authorization-policy-create.

Création d'une autorisation de service à service pour le chiffrement entre comptes à partir de la CLI

Lorsque l'autorisation est nécessaire pour le chiffrement entre comptes, elle doit être créée dans le compte cible qui possède la clé de chiffrement. Exécutez la commande ibmcloud iam authorization-policy-create pour créer des politiques d'autorisation permettant au service Block du compte source d'interagir avec les services de gestion des clés ( Key Protect ) du compte cible. Le service source est server-protect et le service cible est kms. Le rôle que vous devez attribuer est Reader. L'exemple suivant crée une politique d'autorisation entre le service Block et Key Protect.

  1. Créez un fichier JSON contenant les informations suivantes pour les politiques d'autorisation dans votre dossier Documents local.
    '{
       "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. Ensuite, utilisez les fichiers JSON pour exécuter la commande CLI suivante.
    ibmcloud iam authorization-policy-create --file ~/Documents/policy.json
    
    L'autorisation inter-comptes est unidirectionnelle et spécifique à la clé et au service. Lorsque le compte A autorise le service de fichiers du compte B à utiliser sa clé, le compte B peut utiliser la clé de cryptage du compte A pour crypter les actions du compte B. Cependant, le compte A ne peut pas utiliser les clés racine du compte B pour chiffrer les parts du compte A.

Création d'une autorisation de service à service pour la restauration inter-comptes à partir de l'interface de ligne de commande

Lorsque l'autorisation est nécessaire pour la restauration de données entre comptes, l'autorisation doit être créée dans le compte cible qui possède l'instantané. Exécutez la commande ibmcloud iam authorization-policy-create pour autoriser le service Block Storage du compte source à utiliser un instantané créé par le compte cible pour restaurer des volumes. Le compte destinataire doit s'assurer que son utilisateur admin a le rôle SnapshotRemoteAccountRestorer dans IAM avant de lancer une restauration de volume avec le CRN de l'instantané partagé.

  1. Créez un fichier JSON contenant les informations suivantes pour les politiques d'autorisation dans votre dossier Documents local.
    '{
         "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. Ensuite, utilisez les fichiers JSON pour exécuter la commande CLI suivante.
    ibmcloud iam authorization-policy-create --file ~/Documents/policy.json
    

Création d'une autorisation de service à service pour le chiffrement géré par le client à l'aide de l'API

Envoyez une requête à l'API IAM Policy Management afin de créer l'autorisation de service à service permettant au service Block du volume source d'interagir avec une instance du service de gestion des clés.

  • L'exemple suivant montre comment vous pouvez autoriser le service Block is.server-protect (source) à interagir avec le service Key Protect kms (cible) avec le rôle Reader .

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

Création d'une autorisation de service à service pour le chiffrement entre comptes avec l'API

Envoyez une requête à l'API IAM Policy Management afin de créer l'autorisation de service à service permettant au service Block Storage du compte source d'interagir avec une instance du service de gestion des clés (Key Management Service) du compte cible. La demande doit être faite à partir du compte qui possède la clé racine du client dans son KMS.

  • L'exemple suivant montre comment autoriser le service Bloquer is.server-protect d'un compte (source) pour interagir avec leHyper Protect Crypto Services service hs-crypto d'un autre compte (cible) avec le_ Lecteur_ et_ Délégant d'autorisation_ les rôles.

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

L'autorisation inter-comptes est unidirectionnelle et spécifique à la clé et au service. Lorsque le compte A autorise le service de fichiers du compte B à utiliser sa clé, le compte B peut utiliser la clé de cryptage du compte A pour crypter les actions du compte B. Cependant, le compte A ne peut pas utiliser les clés racine du compte B pour chiffrer les parts du compte A.

Création d'une autorisation de service à service pour la restauration inter-comptes à l'aide de l'API

La requête API suivante autorise le service Block Storage du compte source à utiliser un instantané créé par le compte cible pour restaurer des volumes. Cet appel doit être émis par le compte propriétaire de l'instantané. Le compte source destinataire doit s'assurer que son utilisateur admin a le rôle SnapshotRemoteAccountRestorer dans IAM avant de lancer une restauration de volume avec le CRN de l'instantané partagé.

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":"*"}]}],
   }'

Si vous souhaitez restreindre l'accès à un instantané spécifique, utilisez l'identifiant de l'instantané au lieu de * lorsque vous définissez vos ressources.

Création d'une autorisation de service à service pour le chiffrement géré par le client avec Terraform

Créez une règle d'autorisation entre le service Block et les services de gestion de clés à l'aide de l'argument de ressource ibm_iam_authorization_policy dans votre fichier main.tf.

L'exemple suivant crée une règle d'autorisation entre le service Block et Key Protect lorsqu'il est appliqué.

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

Pour plus d'informations sur les arguments et les attributs, voir la documentation Terraform pour les ressources d'autorisation.

Création d'une autorisation de service à service pour le chiffrement entre comptes avec Terraform

  1. Terraform prend en charge la configuration de deux comptes différents pourIBM fournisseur. Le fournisseur sans alias est considéré comme le fournisseur par défaut. Consultez l'exemple suivant, dans lequel deux comptes IBM sont spécifiés, et le deuxième compte utilise l'alias team_account. Cette configuration doit être appelée ibm.team_account plus tard.

    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
    }
    

    Pour plus d'informations sur les arguments et les attributs, voir IBM Cloud fournisseur.

  2. Pour créer l'autorisation IAM entre le service de gestion de clés d'un compte et le service de stockage par blocs d'un autre compte, utilisez la ressource ibm_iam_authorization_policy. L'exemple suivant crée une autorisation entre le service Key Protect et le service de fichiers des deux comptes.

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

    Cette ressource Terraform doit également inclure l'alias du fournisseur (dans notre exemple,ibm.team_account ) avec le compte ibmcloud_api_key où appartient la clé de cryptage.

    Pour plus d'informations sur les arguments et les attributs, voir ibm_iam_authorization_policy.

Création d'une autorisation de service à service pour la restauration inter-comptes Terraform

  1. Configurez les deux comptes IBM pour le fournisseur IBM. Voir l'exemple de la section précédente.

  2. Pour créer l'autorisation IAM pour le service Block Storage d'un compte afin d'utiliser un instantané créé par un autre compte pour restaurer des volumes, utilisez la ressource 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"
    }
    

    Cette ressource Terraform doit également inclure l'alias du fournisseur (dans notre exemple,ibm.team_account ) avec le compte ibmcloud_api_key où appartient la clé de cryptage.

    Pour plus d'informations sur les arguments et les attributs, voir ibm_iam_authorization_policy.

Etapes suivantes