Attribuer et révoquer des rôles IAM

Cette page explique comment attribuer des rôles Identity and Access Management (IAM) à des comptes principaux sur les ressources Secure Source Manager. Pour savoir comment attribuer des rôles à d'autres ressources Google Cloud , consultez Gérer l'accès aux projets, aux dossiers et aux organisations.

Les instances et les dépôts Secure Source Manager ont leurs propres rôles. La première fois que vous accordez des rôles d'instance dans un projet, vous devez utiliser l'outil gcloud CLI ou l'API REST. Vous pouvez accorder des rôles de dépôt avec l'outil gcloud CLI, l'API REST ou l'interface Web Secure Source Manager.

Une fois que vous avez attribué un rôle Secure Source Manager à l'aide de gcloud CLI, de l'interface Web ou de l'API REST, le rôle est visible pour votre projet dans la console Google Cloud .

Rôles requis

Pour obtenir les autorisations nécessaires pour mettre à jour la stratégie IAM sur une instance ou un dépôt, demandez à votre administrateur de vous accorder les rôles IAM suivants :

Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.

Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.

Pour savoir comment accorder des rôles Secure Source Manager, consultez Contrôle des accès avec IAM et Accorder aux utilisateurs l'accès à l'instance.

Spécifier des comptes principaux

Un compte principal représente une identité pouvant accéder à une ressource. Chaque compte principal possède son propre identifiant. Les identifiants principaux se présentent sous la forme suivante :

PRINCIPAL-TYPE:ID

Par exemple, user:my-user@example.com. Pour en savoir plus sur les comptes principaux, consultez Fonctionnement d'IAM.

Pour le type de compte principal user, le nom de domaine indiqué dans l'identifiant doit être un domaine Google Workspace ou Cloud Identity, sauf si vous utilisez la fédération des identités des employés. Pour savoir comment configurer un domaine Cloud Identity, consultez la présentation de Cloud Identity.

Principaux de la fédération d'identité de personnel

Si vous utilisez la fédération d'identité des employés pour accéder à Secure Source Manager, les comptes principaux sont représentés différemment. Pour savoir comment accorder l'accès aux comptes principaux qui représentent des groupes d'identités, consultez Représenter les utilisateurs de pools de personnel dans les stratégies IAM.

Par exemple, la commande suivante accorde à l'utilisateur user@example.com le rôle Accesseur d'instance (roles/securesourcemanager.instanceAccessor) dans le pool d'identités de personnel my-pool sur l'instance my-instance dans le projet my-project de la région us-central1 :

  gcloud beta source-manager instances add-iam-policy-binding my-instance \
      --project=my-project \
      --region=us-central1 \
      --member=principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/user@example.com \
      --role=roles/securesourcemanager.instanceAccessor

Vous pouvez accorder des autorisations aux utilisateurs ou aux groupes de votre pool d'identités de personnel en fonction des attributs de votre fournisseur d'identité (IdP), ou utiliser le Common Expression Language (CEL) pour mapper vos attributs OIDC à des attributs personnalisés afin de définir une stratégie d'autorisation dans votre stratégie IAM. Pour en savoir plus sur les mappages d'attributs, consultez Mappages d'attributs.

Attribuer ou révoquer des rôles d'instance

Pour attribuer ou révoquer des rôles d'instance, utilisez le modèle lecture-modification-écriture pour mettre à jour la stratégie d'autorisation de la ressource :

  1. Lisez la stratégie d'autorisation actuelle en appelant getIamPolicy().
  2. Modifiez la stratégie d'autorisation, à l'aide d'un éditeur de texte ou de façon automatisée, afin d'ajouter ou de supprimer des comptes principaux ou des liaisons de rôles.
  3. Écrivez la stratégie d'autorisation mise à jour en appelant setIamPolicy().

gcloud

  1. Pour lire la stratégie d'autorisation actuelle et l'enregistrer dans /tmp/instances.json, exécutez la commande suivante :

    gcloud beta source-manager instances get-iam-policy INSTANCE_ID \
        --project=PROJECT_ID \
        --region=REGION \
        --format=json > /tmp/instance.json
    

    Remplacez les éléments suivants :

    • INSTANCE_ID par l'ID de l'instance.
    • PROJECT_ID par l'ID ou le numéro du projet de l'instance.
    • REGION avec la région dans laquelle se trouve l'instance. Consultez la documentation sur les emplacements pour connaître les régions Secure Source Manager disponibles.

    Le résultat inclura toutes les liaisons existantes ou, si aucune n'existe, la valeur etag, comme suit :

    {
        "etag": "BwUjHYKJUiQ="
    }
    
  2. De façon automatisée ou à l'aide d'un éditeur de texte, modifiez la copie locale de la stratégie d'autorisation de votre instance afin de refléter les rôles que vous souhaitez accorder ou révoquer.

    Pour vous assurer de ne pas écraser les autres modifications, ne modifiez pas et ne supprimez pas le champ etag de la stratégie d'autorisation. Le champ etag identifie l'état actuel de la stratégie d'autorisation. Lorsque vous définissez la stratégie d'autorisation modifiée, Cloud IAM compare la valeur etag de la requête avec la valeur etag existante et n'écrit la stratégie d'autorisation que si les valeurs correspondent.

    Pour modifier les rôles accordés par une stratégie d'autorisation, vous devez modifier les liaisons de rôle dans la stratégie d'autorisation. Les liaisons de rôle ont le format suivant :

    {
      "role": "ROLE_NAME",
      "members": [
        "PRINCIPAL_1",
        "PRINCIPAL_2",
        ...
        "PRINCIPAL_N"
      ]
    }
    

    Les espaces réservés prennent les valeurs suivantes :

    • ROLE_NAME : nom du rôle que vous souhaitez attribuer. Utilisez le format suivant : roles/securesourcemanager.IDENTIFIER

    • PRINCIPAL_1, PRINCIPAL_2, ...PRINCIPAL_N : identifiants des comptes principaux auxquels vous souhaitez accorder le rôle.

    Par exemple, la stratégie suivante attribue le rôle instanceOwner à user1@gmail.com et le rôle instanceManager aux utilisateurs user2@gmail.com, user3@gmail.com et au compte de service my-other-app@appspot.gserviceaccount.com.

    {
        "etag": "BwUjHYKJUiQ=",
        "bindings": [
        {
            "role": "roles/securesourcemanager.instanceOwner",
            "members": [
                "user:user1@gmail.com"
            ]
        },
        {
            "role": "roles/resourcemanager.instanceManager",
            "members": [
                "user:user2@gmail.com",
                "user:user3@gmail.com",
                "serviceAccount:my-other-app@appspot.gserviceaccount.com"
            ]
        }
        ]
    }
    
  3. Après avoir modifié la stratégie d'autorisation enregistrée pour accorder et révoquer les rôles sélectionnés, mettez à jour la stratégie d'autorisation de votre instance en exécutant la commande suivante :

    gcloud beta source-manager instances set-iam-policy INSTANCE_ID  \
        --project=PROJECT_ID \
        --region=REGION \
        /tmp/instance.json
    

    Remplacez les éléments suivants :

    • INSTANCE_ID par l'ID de l'instance.
    • PROJECT_ID par l'ID ou le numéro du projet de l'instance.
    • REGION avec la région dans laquelle se trouve l'instance. Consultez la documentation sur les emplacements pour connaître les régions Secure Source Manager disponibles.

API

  1. Exécutez la commande instances.getIamPolicy suivante pour lire la stratégie actuelle :

    curl \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        https://securesourcemanager.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/instances/INSTANCE_ID:getIamPolicy > /tmp/instance.json
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID ou numéro de projet de l'instance.
    • REGION correspond à la région dans laquelle se trouve l'instance. Consultez la documentation sur les emplacements pour connaître les régions Secure Source Manager disponibles.
    • INSTANCE_ID : ID de l'instance.

    Le résultat inclura toutes les liaisons existantes ou, si aucune n'existe, la valeur etag, comme suit :

    {
        "etag": "BwUjHYKJUiQ="
    }
    
  2. De façon automatisée ou à l'aide d'un éditeur de texte, modifiez la copie locale de la stratégie d'autorisation de votre instance afin de refléter les rôles que vous souhaitez accorder ou révoquer.

    Pour vous assurer de ne pas écraser les autres modifications, ne modifiez pas et ne supprimez pas le champ etag de la stratégie d'autorisation. Le champ etag identifie l'état actuel de la stratégie d'autorisation. Lorsque vous définissez la stratégie d'autorisation modifiée, IAM compare la valeur etag de la requête avec la valeur etag existante et n'écrit la stratégie d'autorisation que si les valeurs correspondent.

    Pour modifier les rôles accordés par une stratégie d'autorisation, vous devez modifier les liaisons de rôle dans la stratégie d'autorisation. Les liaisons de rôle ont le format suivant :

    {
      "role": "ROLE_NAME",
      "members": [
        "PRINCIPAL_1",
        "PRINCIPAL_2",
        ...
        "PRINCIPAL_N"
      ]
    }
    

    Les espaces réservés prennent les valeurs suivantes :

    • ROLE_NAME : nom du rôle que vous souhaitez attribuer. Utilisez le format suivant : roles/securesourcemanager.IDENTIFIER

    • PRINCIPAL_1, PRINCIPAL_2, ...PRINCIPAL_N : identifiants des comptes principaux auxquels vous souhaitez accorder le rôle.

    Par exemple, la stratégie suivante attribue le rôle instanceOwner à user1@gmail.com et le rôle instanceManager aux utilisateurs user2@gmail.com, user3@gmail.com et au compte de service my-other-app@appspot.gserviceaccount.com.

    {
    "policy": {
        "etag": "BwUjHYKJUiQ=",
        "bindings": [
        {
            "role": "roles/securesourcemanager.instanceOwner",
            "members": [
                "user:user1@gmail.com"
            ]
        },
        {
            "role": "roles/resourcemanager.instanceManager",
            "members": [
                "user:user2@gmail.com",
                "user:user3@gmail.com",
                "serviceAccount:my-other-app@appspot.gserviceaccount.com"
            ]
        }
        ]
    }
    }
    
  3. Après avoir modifié la stratégie d'autorisation pour accorder et révoquer les rôles choisis, appelez instances.setIamPolicy() pour effectuer les mises à jour.

    Exécutez la commande instances.setIamPolicy suivante pour définir la nouvelle règle sur l'instance.

    curl \
        -H "Content-Type: application/json" \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        https://securesourcemanager.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/instances/INSTANCE_ID:setIamPolicy \
        -d @/tmp/instance.json
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID ou numéro de projet de l'instance.
    • REGION correspond à la région dans laquelle se trouve l'instance. Consultez la documentation sur les emplacements pour connaître les régions Secure Source Manager disponibles.
    • INSTANCE_ID : ID de l'instance.

Accorder ou révoquer des rôles de dépôt

Pour attribuer ou révoquer des rôles de dépôt à des utilisateurs et des comptes de service, vous pouvez les attribuer à partir de l'interface Web Secure Source Manager ou utiliser l'API Secure Source Manager pour mettre à jour la règle d'autorisation du dépôt. Pour accorder des rôles de dépôt à des groupes, vous devez utiliser l'API Secure Source Manager.

Les utilisateurs doivent se voir attribuer un rôle au niveau de l'instance avant de pouvoir se voir attribuer des rôles au niveau du dépôt. Pour savoir comment attribuer des rôles d'instance, consultez Attribuer ou révoquer des rôles d'instance.

Interface Web

Pour attribuer des rôles au niveau du dépôt à des utilisateurs ou des comptes de service à l'aide de l'interface Web :

  1. Accédez à l'URL de l'instance fournie par votre contact Google.
  2. Sur la page Mes dépôts, sélectionnez votre dépôt.
  3. Cliquez sur l'onglet Autorisations.
  4. Dans la section Personnes et autorisations, cliquez sur Ajouter des utilisateurs.
  5. Dans le champ Ajouter un compte principal, saisissez l'adresse e-mail de l'utilisateur ou du compte de service auquel vous souhaitez attribuer le rôle.
  6. Dans le menu Attribuer un rôle, sélectionnez le rôle à attribuer.
  7. Cliquez sur Enregistrer.

Pour ajouter d'autres rôles, cliquez sur l'icône Modifier  et ajoutez les rôles à l'aide du menu Attribuer un rôle.

API

La méthode repositories.getIamPolicy de l'API Secure Source Manager permet d'obtenir la stratégie d'autorisation d'un dépôt.

  1. Exécutez la commande repositories.getIamPolicy suivante pour lire la stratégie actuelle et l'enregistrer dans /tmp/repository.json :
curl \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    https://securesourcemanager.googleapis.com/v1/projects/REPOSITORY_PROJECT/locations/REGION/repositories/REPOSITORY_ID:getIamPolicy > /tmp/repository.json

Remplacez les éléments suivants :

  • REPOSITORY_PROJECT : ID ou numéro de projet du dépôt.
  • REGION : région dans laquelle se trouve le dépôt.
  • REPOSITORY_ID : ID du dépôt.

Le résultat inclura toutes les liaisons existantes ou, si aucune n'existe, la valeur etag, comme suit :

{
    "etag": "BwUjHYKJUiQ="
}
  1. De façon automatisée ou à l'aide d'un éditeur de texte, modifiez la copie locale de la stratégie d'autorisation de votre dépôt enregistrée dans /tmp/repository.json afin de refléter les rôles que vous souhaitez accorder ou révoquer.

    Pour vous assurer de ne pas écraser les autres modifications, ne modifiez pas et ne supprimez pas le champ etag de la stratégie d'autorisation. Le champ etag identifie l'état actuel de la stratégie d'autorisation. Lorsque vous définissez la stratégie d'autorisation modifiée, IAM compare la valeur etag de la requête avec la valeur etag existante et n'écrit la stratégie d'autorisation que si les valeurs correspondent.

    Pour modifier les rôles accordés par une stratégie d'autorisation, vous devez modifier les liaisons de rôle dans la stratégie d'autorisation. Les liaisons de rôle ont le format suivant :

    {
      "role": "ROLE_NAME",
      "members": [
        "PRINCIPAL_1",
        "PRINCIPAL_2",
        ...
        "PRINCIPAL_N"
      ]
    }
    

    Les espaces réservés prennent les valeurs suivantes :

    • ROLE_NAME : nom du rôle que vous souhaitez attribuer. Utilisez le format suivant : roles/securesourcemanager.<var>IDENTIFIER</var>

    • PRINCIPAL_1, PRINCIPAL_2, ...PRINCIPAL_N : identifiants des comptes principaux auxquels vous souhaitez accorder le rôle.

    L'exemple suivant attribue le rôle repoAdmin à l'utilisateur email1@gmail.com, et le rôle repoWriter aux utilisateurs email2@gmail.com et group1@gmail.com, ainsi qu'au compte de service my-other-app@appspot.gserviceaccount.com.

    {
    "policy": {
        "etag": "BwUjHYKJUiQ=",
        "bindings": [
        {
            "role": "roles/securesourcemanager.repoAdmin",
            "members": [
                "user:email1@gmail.com"
            ]
        },
        {
            "role": "roles/resourcemanager.repoWriter",
            "members": [
                "user:email2@gmail.com",
                "group:group1@gmail.com",
                "serviceAccount:my-other-app@appspot.gserviceaccount.com"
            ]
        }
        ]
    }
    }
    
  2. Enregistrez le fichier /tmp/repository.json modifié.

  3. Définissez la nouvelle règle avec la commande setIamPolicy :

    curl \
        -H "Content-Type: application/json" \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        https://securesourcemanager.googleapis.com/v1/projects/REPOSITORY_PROJECT/locations/REGION/repositories/REPOSITORY_ID:setIamPolicy \
        -d @/tmp/repository.json
    

    Remplacez les éléments suivants :

    • REPOSITORY_PROJECT : ID ou numéro de projet du dépôt.
    • REGION : région dans laquelle se trouve le dépôt. Consultez la documentation sur les emplacements pour connaître les régions Secure Source Manager disponibles.
    • REPOSITORY_ID : ID du dépôt.

Étapes suivantes