Attribuer et révoquer des rôles IAM

Cette page explique comment attribuer des rôles IAM (Identity and Access Management) aux comptes principaux sur les ressources Secure Source Manager. Pour en savoir plus sur l'attribution de rôles sur 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 attribuez des rôles d'instance dans un projet, vous devez utiliser l'outil gcloud CLI ou l'API REST. Vous pouvez attribuer des rôles de dépôt à l'aide de l'outil gcloud CLI, de l'API REST ou de l'interface Web de Secure Source Manager.

Une fois que vous avez attribué un rôle Secure Source Manager au moins une fois à l'aide de l'outil gcloud CLI, de l'interface Web ou de l'API REST, le rôle devient disponible dans la console Google Cloud lors de l'attribution d'un accès au niveau du projet. Toutefois, les attributions de rôles (liaisons) spécifiques au niveau de l'instance et du dépôt n'apparaissent pas dans la liste des comptes principaux sur la page IAM de la console Google Cloud au niveau du projet.

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 en savoir plus sur l'attribution de 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é qui peut accéder à une ressource. Chaque compte principal possède son propre identifiant. Les identifiants des comptes 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 en savoir plus sur l'octroi d'accès aux comptes principaux qui représentent des groupes d'identités, consultez Représenter les utilisateurs de pools d'employés dans les stratégies IAM.

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

  gcloud 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 langage CEL (Common Expression Language) 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.

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

Pour accorder ou révoquer des rôles d'instance pour des comptes principaux, utilisez l'outil gcloud CLI ou l'API Secure Source Manager.

gcloud

  1. Pour attribuer un rôle à un compte principal sur une instance, exécutez la commande suivante :

    gcloud source-manager instances add-iam-policy-binding INSTANCE_ID \
        --project=PROJECT_ID \
        --region=REGION \
        --member=PRINCIPAL \
        --role=ROLE_NAME
    

    Remplacez les éléments suivants :

    • INSTANCE_ID par l'ID de l'instance.
    • PROJECT_ID avec l'ID du projet ou le numéro de projet de l'instance.
    • REGION par 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.
    • PRINCIPAL par le compte principal auquel vous souhaitez attribuer le rôle. Exemple :user:my-user@example.com
    • ROLE_NAME par le nom du rôle à attribuer. Exemple :roles/securesourcemanager.instanceOwner
  2. Pour révoquer un rôle d'un compte principal sur une instance, exécutez la commande suivante :

    gcloud source-manager instances remove-iam-policy-binding INSTANCE_ID \
        --project=PROJECT_ID \
        --region=REGION \
        --member=PRINCIPAL \
        --role=ROLE_NAME
    

    Remplacez les éléments suivants :

    • INSTANCE_ID par l'ID de l'instance.
    • PROJECT_ID avec l'ID du projet ou le numéro de projet de l'instance.
    • REGION par la région dans laquelle se trouve l'instance.
    • PRINCIPAL par le compte principal dont vous souhaitez révoquer le rôle. Exemple :user:my-user@example.com
    • ROLE_NAME par le nom du rôle à révoquer. Exemple :roles/securesourcemanager.instanceOwner

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 du projet ou numéro de projet de l'instance.
    • REGION : 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 inclut toutes les liaisons existantes ou, si aucune n'existe, la valeur etag semblable à celle-ci :

    {
        "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ôles 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@.

    {
    "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@"
            ]
        }
        ]
    }
    }
    
  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 stratégie 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 : 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 accorder ou révoquer des rôles de dépôt aux utilisateurs et aux comptes de service, vous pouvez les attribuer à partir de l'interface Web de Secure Source Manager ou utiliser l'API Secure Source Manager pour mettre à jour la stratégie d'autorisation du dépôt. Pour attribuer 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 d'instance avant de pouvoir se voir attribuer des rôles de dépôt. Pour en savoir plus sur l'attribution de 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 Utilisateurs 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 des rôles, cliquez sur l'icône Modifier , puis 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 du projet ou numéro du 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 inclut toutes les liaisons existantes ou, si aucune n'existe, la valeur etag semblable à celle-ci :

{
    "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ôles 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, group1@gmail.com et au compte de service my-other-app@.

    {
    "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@"
            ]
        }
        ]
    }
    }
    
  2. Enregistrez le fichier /tmp/repository.json modifié.

  3. Définissez la nouvelle stratégie à l'aide de 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 du projet ou numéro du 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