Créer des droits d'accès dans Privileged Access Manager

Vous pouvez créer des droits d'accès pour autoriser l'élévation temporaire des droits d'accès pour un ensemble sélectionné de comptes principaux. Tenez compte des points suivants lorsque vous créez des droits d'accès:

  • Les droits d'accès peuvent être créés au niveau de l'organisation, du dossier ou du projet. Les rôles accordés par un droit d'accès à chaque niveau suivent la hiérarchie des ressources Google Cloud. Par exemple, les rôles accordés par un droit d'accès au niveau de l'organisation sont hérités au niveau des dossiers et des projets.

  • Si vous ajoutez un groupe en tant que demandeur à un droit d'accès, tous les comptes individuels de ce groupe peuvent demander l'octroi de ce droit d'accès. Toutefois, seul le compte individuel qui demande l'octroi peut recevoir des droits élevés.

  • Si vous ajoutez un groupe en tant qu'approbateur à un droit d'accès, tous les comptes individuels de ce groupe peuvent approuver ou refuser une demande d'octroi.

  • Les rôles de base ne sont pas acceptés.

Avant de commencer

Assurez-vous d'avoir activé Privileged Access Manager et configuré les autorisations correspondantes.

Créer des droits d'accès à l'aide de la console Google Cloud

Pour créer un droit d'accès, procédez comme suit:

  1. Accédez à la page Privileged Access Manager.

    Accéder à Privileged Access Manager

  2. Sélectionnez l'organisation, le dossier ou le projet auxquels vous souhaitez appliquer le droit d'accès.

  3. Cliquez sur l'onglet Droits d'accès.

  4. Cliquez sur Créer.

  5. Ajoutez les informations sur les droits d'accès suivantes:

    • Nom du droit d'accès.

    • Vous pouvez attribuer jusqu'à 30 rôles à l'organisation, au dossier ou au projet. Vous pouvez appliquer des conditions IAM à ces rôles, à condition qu'ils ne correspondent pas à des tags de ressources.

    • Durée pendant laquelle les droits d'accès peuvent être accordés

  6. Cliquez sur Suivant.

  7. Recherchez et ajoutez jusqu'à 20 comptes principaux valides pour le droit d'accès. Tous les types principaux sont acceptés, à l'exception de allUsers et allAuthenticatedUsers. Vous pouvez ajouter plus de 20 identités en les ajoutant à un groupe et en listant le groupe dans le droit d'accès.

  8. Indiquez si les comptes principaux doivent justifier la demande d'autorisation.

  9. Cliquez sur Suivant.

  10. Choisissez d'autoriser l'attribution de rôles sans approbation, ou recherchez et ajoutez des comptes principaux valides pouvant approuver la demande. Les types de comptes principaux valides sont les suivants:

    • Comptes Google

    • Groupes

    • Domaines Google Workspace

    • Identifiants de pool d'employés

    Si vous choisissez d'avoir des validateurs, indiquez également s'ils doivent justifier leur approbation de la demande d'autorisation. Vous pouvez ajouter jusqu'à 20 principaux d'approbation par droit d'accès. Vous pouvez ajouter plus de 20 identités en les ajoutant à un groupe et en listant le groupe dans le droit d'accès.

  11. Cliquez sur Suivant.

  12. Facultatif: ajoutez les adresses e-mail des personnes à avertir lorsque le droit d'accès est disponible pour la demande, lorsqu'une autorisation est en attente d'approbation et lorsqu'un demandeur se voit accorder l'accès. Les identités Google associées au droit d'accès, comme les approbateurs et les demandeurs, sont automatiquement notifiées. Toutefois, vous pouvez souhaiter envoyer une notification à un autre ensemble d'adresses e-mail, en particulier si vous utilisez la fédération d'identité de personnel.

  13. Cliquez sur Créer un droit d'accès.

Créer des droits d'accès de manière programmatique

gcloud

La commande gcloud beta pam entitlements create crée un droit d'accès au niveau de l'organisation, du dossier ou du projet.

Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

  • ENTITLEMENT_ID: ID d'éligibilité à créer. Un ID doit comporter entre 4 et 63 caractères et utiliser les caractères suivants :[a-z0-9-]. Le premier caractère doit être une lettre
  • RESOURCE_TYPE : facultatif. Type de ressource auquel le droit d'accès appartient. Utilisez la valeur organization, folder ou project.
  • RESOURCE_ID: utilisé avec RESOURCE_TYPE. ID de l'organisation, du dossier ou du projet Google Cloud pour lequel/laquelle vous souhaitez gérer les droits d'accès. Les ID de projet sont des chaînes alphanumériques, telles que my-project. Les ID de dossier et d'organisation sont des valeurs numériques, telles que 123456789012.
  • SCOPE: organisation, dossier ou projet dans lequel/laquelle créer le droit d'accès, au format organizations/ORGANIZATION_ID, folders/FOLDER_ID ou projects/PROJECT_ID. Les ID de projet sont des chaînes alphanumériques, telles que my-project. Les ID de dossier et d'organisation sont des valeurs numériques, telles que 123456789012.
  • RESOURCE_MANAGER_RESOURCE_TYPE: Organization, Folder ou Project, selon la portée.
  • ROLE: rôles à attribuer lorsqu'un droit d'accès est accordé.
  • TIME_IN_SECONDS: durée maximale d'une autorisation, en secondes.
  • REQUESTING_MEMBER: comptes principaux pouvant demander l'octroi du droit d'accès. Tous les types principaux sont acceptés, à l'exception de allUsers et allAuthenticatedUsers.

  • APPROVING_EMAIL : facultatif. Adresses e-mail supplémentaires à informer lorsqu'une autorisation a été demandée. Les identités Google associées aux approbateurs d'attribution sont automatiquement notifiées. Toutefois, vous pouvez souhaiter envoyer une notification à un autre ensemble d'adresses e-mail, en particulier si vous utilisez la fédération d'identité des employés.
  • APPROVING_MEMBER: comptes principaux pouvant approuver la demande de droit d'accès. Les types principaux valides sont les suivants :

    • Utilisateur
    • Groupe
    • Domaine
    • Identifiants de pool d'employés
  • ADMIN_EMAIL_ADDRESS : facultatif. Adresses e-mail supplémentaires à informer lorsque l'accès est accordé à un demandeur. Les identités Google associées aux approbateurs d'attribution sont automatiquement notifiées. Toutefois, vous pouvez souhaiter envoyer une notification à un autre ensemble d'adresses e-mail, en particulier si vous utilisez la fédération d'identité des employés.
  • REQUESTER_EMAIL_ADDRESS : facultatif. Autres adresses e-mail à avertir lorsque ce droit d'accès sera disponible. Les identités Google associées aux demandeurs d'attribution sont automatiquement notifiées. Toutefois, vous pouvez souhaiter envoyer une notification à un autre ensemble d'adresses e-mail, en particulier si vous utilisez la fédération d'identité des employés.

Enregistrez le code suivant dans un fichier nommé entitlement.yaml :

privilegedAccess:
  gcpIamAccess:
    resourceType: cloudresourcemanager.googleapis.com/RESOURCE_MANAGER_RESOURCE_TYPE
    resource: //cloudresourcemanager.googleapis.com/SCOPE
    roleBindings:
    - role: ROLE_1
    - role: ROLE_2
maxRequestDuration: TIME_IN_SECONDSs
eligibleUsers:
- principals:
  - REQUESTING_MEMBER_1
  - REQUESTING_MEMBER_2
approvalWorkflow:
  manualApprovals:
    requireApproverJustification: true
    steps:
    - approvalsNeeded: 1
      approverEmailRecipients:
      - APPROVING_EMAIL_1
      - APPROVING_EMAIL_2
      approvers:
      - principals:
        - APPROVING_MEMBER_1
        - APPROVING_MEMBER_2
requesterJustificationConfig:
  unstructured: {}
additionalNotificationTargets:
  adminEmailRecipients:
  - ADMIN_EMAIL_ADDRESS_1
  - ADMIN_EMAIL_ADDRESS_2
  requesterEmailRecipients:
  - REQUESTER_EMAIL_ADDRESS_1
  - REQUESTER_EMAIL_ADDRESS_2

Exécutez la commande suivante :

Linux, macOS ou Cloud Shell

gcloud beta pam entitlements create \
    ENTITLEMENT_ID \
    --entitlement-file=entitlement.yaml \
    --location=global \
    --RESOURCE_TYPE=RESOURCE_ID

Windows (PowerShell)

gcloud beta pam entitlements create `
    ENTITLEMENT_ID `
    --entitlement-file=entitlement.yaml `
    --location=global `
    --RESOURCE_TYPE=RESOURCE_ID

Windows (cmd.exe)

gcloud beta pam entitlements create ^
    ENTITLEMENT_ID ^
    --entitlement-file=entitlement.yaml ^
    --location=global ^
    --RESOURCE_TYPE=RESOURCE_ID

Vous devriez obtenir un résultat semblable à celui-ci :

Create request issued for: [ENTITLEMENT_ID]
Waiting for operation [projects/my-project/locations/global/operations/OPERATION_ID] to complete...done.
Created entitlement [ENTITLEMENT_ID].
additionalNotificationTargets: {}
approvalWorkflow:
  manualApprovals:
    requireApproverJustification: true
    steps:
    - approvalsNeeded: 1
      approvers:
      - principals:
        - user:alex@example.com
createTime: '2024-04-09T02:39:37.011866832Z'
eligibleUsers:
- principals:
  - user:bola@example.com
etag: 00000000000000000000000000000000000000000000000000000000000=
maxRequestDuration: 7200s
name: projects/my-project/locations/global/entitlements/ENTITLEMENT_ID
privilegedAccess:
  gcpIamAccess:
    resource: //cloudresourcemanager.googleapis.com/projects/my-project
    resourceType: cloudresourcemanager.googleapis.com/Project
    roleBindings:
    - role: roles/storage.admin
requesterJustificationConfig:
  unstructured: {}
state: AVAILABLE
updateTime: '2024-04-09T02:39:40.066770306Z'

REST

La méthode createEntitlement de l'API Privileged Access Manager crée un droit d'accès au niveau de l'organisation, du dossier ou du projet.

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • SCOPE: organisation, dossier ou projet dans lequel/laquelle créer le droit d'accès, au format organizations/ORGANIZATION_ID, folders/FOLDER_ID ou projects/PROJECT_ID. Les ID de projet sont des chaînes alphanumériques, telles que my-project. Les ID de dossier et d'organisation sont des valeurs numériques, telles que 123456789012.
  • ENTITLEMENT_ID: ID d'éligibilité à créer. Un ID doit comporter entre 4 et 63 caractères et utiliser les caractères suivants :[a-z0-9-]. Le premier caractère doit être une lettre
  • REQUEST_ID : facultatif. Doit être un UUID non nul. Si le serveur reçoit une requête avec un ID de requête, il vérifie si une autre requête avec cet ID a déjà été traitée au cours des 60 dernières minutes. Si c'est le cas, la nouvelle requête est ignorée.
  • RESOURCE_MANAGER_RESOURCE_TYPE: Organization, Folder ou Project, selon la portée.
  • ROLE: rôles à attribuer lorsqu'un droit d'accès est accordé.
  • TIME_IN_SECONDS: durée maximale d'une autorisation, en secondes.
  • REQUESTING_MEMBER: comptes principaux pouvant demander l'octroi du droit d'accès. Tous les types principaux sont acceptés, à l'exception de allUsers et allAuthenticatedUsers.

  • APPROVING_MEMBER: comptes principaux pouvant approuver la demande de droit d'accès. Les types principaux valides sont les suivants :

    • Utilisateur
    • Groupe
    • Domaine
    • Identifiants de pool d'employés
  • APPROVING_EMAIL : facultatif. Adresses e-mail supplémentaires à informer lorsqu'une autorisation a été demandée. Les identités Google associées aux approbateurs d'attribution sont automatiquement notifiées. Toutefois, vous pouvez souhaiter envoyer une notification à un autre ensemble d'adresses e-mail, en particulier si vous utilisez la fédération d'identité des employés.
  • ADMIN_EMAIL_ADDRESS : facultatif. Adresses e-mail supplémentaires à informer lorsque l'accès est accordé à un demandeur. Les identités Google associées aux approbateurs d'attribution sont automatiquement notifiées. Toutefois, vous pouvez souhaiter envoyer une notification à un autre ensemble d'adresses e-mail, en particulier si vous utilisez la fédération d'identité des employés.
  • REQUESTER_EMAIL_ADDRESS : facultatif. Autres adresses e-mail à avertir lorsque ce droit d'accès sera disponible. Les identités Google associées aux demandeurs d'attribution sont automatiquement notifiées. Toutefois, vous pouvez souhaiter envoyer une notification à un autre ensemble d'adresses e-mail, en particulier si vous utilisez la fédération d'identité des employés.

Méthode HTTP et URL :

POST https://privilegedaccessmanager.googleapis.com/v1beta/SCOPE/locations/global/entitlements?entitlementId=ENTITLEMENT_ID&requestId=REQUEST_ID

Corps JSON de la requête :

{
  "privilegedAccess": {
    "gcpIamAccess": {
      "resourceType": "cloudresourcemanager.googleapis.com/RESOURCE_MANAGER_RESOURCE_TYPE",
      "resource": "//cloudresourcemanager.googleapis.com/SCOPE",
      "roleBindings": [
        {
          "role": "ROLE_1"
        },
        {
          "role": "ROLE_2"
        }
      ]
    }
  },
  "maxRequestDuration": "TIME_IN_SECONDSs",
  "eligibleUsers": [
    {
      "principals": [
        "REQUESTING_MEMBER_1",
        "REQUESTING_MEMBER_2",
        ...
      ]
    }
  ],
  "approvalWorkflow": {
    "manualApprovals": {
      "requireApproverJustification": true,
      "steps": [
        {
          "approvers": [
            {
              "principals": [
                "APPROVING_MEMBER_1",
                "APPROVING_MEMBER_2",
                ...
              ]
            }
          ],
          "approvalsNeeded": 1,
          "approverEmailRecipients": [
            "APPROVING_EMAIL_1",
            "APPROVING_EMAIL_2",
            ...
          ]
        }
      ]
    }
  },
  "requesterJustificationConfig": {
    "unstructured": {
    }
  },
  "additionalNotificationTargets": {
    "adminEmailRecipients": [
      "ADMIN_EMAIL_ADDRESS_1",
      "ADMIN_EMAIL_ADDRESS_2",
      ...
    ],
    "requesterEmailRecipients": [
      "REQUESTER_EMAIL_ADDRESS_1",
      "REQUESTER_EMAIL_ADDRESS_2",
      ...
    ]
  }
}

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir une réponse JSON de ce type :

{
    "name": "projects/my-project/locations/global/operations/OPERATION_ID",
    "metadata": {
      "@type": "type.googleapis.com/google.cloud.privilegedaccessmanager.v1beta.OperationMetadata",
      "createTime": "2024-03-05T03:35:14.596739353Z",
      "target": "projects/my-project/locations/global/entitlements/ENTITLEMENT_ID",
      "verb": "create",
      "requestedCancellation": false,
      "apiVersion": "v1beta"
    },
    "done": false
}

Pour vérifier la progression d'une opération de création, vous pouvez envoyer une requête GET au point de terminaison suivant:

https://privilegedaccessmanager.googleapis.com/v1beta/SCOPE/locations/global/operations/OPERATION_ID

Envoyez une requête GET au point de terminaison suivant pour lister toutes les opérations:

https://privilegedaccessmanager.googleapis.com/v1beta/SCOPE/locations/global/operations

Terraform

Vous pouvez utiliser Terraform pour créer des droits d'accès. Pour en savoir plus, consultez google_privileged_access_manager_entitlement dans la documentation Terraform.

Étape suivante