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 des ressources Secure Source Manager. Pour en savoir plus sur l'attribution de rôles sur d'autres Google Cloud ressources, consultez la page 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 avec l'outil gcloud CLI, l'API REST ou via l'interface Web Secure Source Manager.

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

Rôles requis

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

Pour plus d'informations sur l'attribution de rôles, consultez la page 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 la page Contrôle des accès avec IAM et Accorder aux utilisateurs l'accès à une 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, lisez 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 d'identité de personnel. Pour savoir comment configurer un domaine Cloud Identity, consultez la présentation de Cloud Identity.

Comptes principaux de la fédération d'identité de personnel

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

Par exemple, la commande suivante attribue le rôle d'accesseur d'instance (roles/securesourcemanager.instanceAccessor) à l'utilisateur user@example.com dans le pool de personnel 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 droits d'accès 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 d'expression commun (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 la page Mappages d'attributs.

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

Pour attribuer 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 par l'ID 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 attribuer le rôle. Par exemple, user:my-user@example.com.
    • ROLE_NAME par le nom du rôle à attribuer. Par 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 par l'ID 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 auquel révoquer le rôle. Par exemple, user:my-user@example.com.
    • ROLE_NAME par le nom du rôle à révoquer. Par 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 par l'ID 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.
    • INSTANCE_ID par l'ID de l'instance.

    Le résultat inclura toutes les liaisons existantes ou, s'il n'en existe aucune, la valeur etag semblable à la suivante :

    {
        "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 qu'une stratégie d'autorisation accorde, 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.

    Utilisez 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 par l'ID 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.
    • INSTANCE_ID par l'ID de l'instance.

Attribuer 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 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 disposer d'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 la page 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 de modification modifier 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 par l'ID ou le numéro de projet du dépôt.
  • REGION par la région dans laquelle se trouve le dépôt.
  • REPOSITORY_ID par l'ID du dépôt.

Le résultat inclura toutes les liaisons existantes ou, s'il n'en existe aucune, la valeur etag semblable à la suivante :

{
    "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, 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 qu'une stratégie d'autorisation accorde, 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, group1@gmail.com et 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 stratégie 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 par l'ID ou le numéro de projet du dépôt.
    • REGION par la 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 par l'ID du dépôt.

Étape suivante