Définir l’autorisation d’affichage pour un groupe dans Les hooks de service

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019

Par défaut, seuls les administrateurs de projet disposent d’autorisations d’affichage ou de modification . Pour accorder ces autorisations directement à d’autres utilisateurs, vous pouvez utiliser l’outil en ligne de commande ou l’API REST de sécurité.

Capture d’écran montrant la page ServiceHooks sans autorisations.

L’ID ServiceHooks d’espace de noms de sécurité est défini sous Espaces de noms de sécurité de liste comme cb594ebe-87dd-4fc9-ac2c-6a10a4c92046

Prérequis

  1. Installez Azure CLI pour exécuter la az devops commande. Comment installer l’interface de ligne de commande Azure

  2. Créez un jeton d’accès personnel (PAT) pour votre profil Azure DevOps. Vérifiez que vous êtes membre du groupe Administrateur de collection de projets (PCA).

    • Identité (lecture)
    • Graphique (lecture)
    • Sécurité (Gérer)
  3. Connectez-vous à Azure DevOps avec az devops login. Si vous n’avez pas l’extension, installez-la az devops .

    > az devops login
    The command requires the extension azure-devops. Do you want to install it now? The command will continue to run after the extension is installed. (Y/n): Y
    
  4. Vous pouvez définir votre organisation comme organisation par défaut. Sinon, définissez --org "https://dev.azure.com/{organization}" pour chaque commande.

    az devops configure --defaults organization="https://dev.azure.com/{organization}"
    
  5. Vérifiez si vous pouvez voir la liste des autorisations pour votre organisation.

    az devops security permission namespace list --org "https://dev.azure.com/{organization}"
    

Lire l’identité de groupe et le jeton d’autorisation

  1. Recherchez le descripteur d’identité de votre groupe.

    > az devops security group list --project ac515e82-560c-4af8-845b-9f7f968d8e7b --output table
    
    Name                                             Descriptor
    -----------------------------------------------  --------------------------------------------------------------------------------------------------------------------------------------------------
    [TEAM FOUNDATION]\EntraServiceHooksRead          aadgp.Uy0xLTktMTU1MTM3NDI0NS0xMjA0NDAwOTY5LTI0MDI5ODY0MTMtMjE3OTQwODYxNi0zLTM5NTQxNzM3ODYtMTUyMTA4MTkyNS0yNTQwNTA4MjYzLTMzNDgxNjQxNjg
    

    Si vous souhaitez filtrer par nom de groupe, vous pouvez utiliser findstr ou grep commander dépend de votre invite de commandes.

  2. Obtenir le jeton d’autorisation.

    > az devops security permission list --id cb594ebe-87dd-4fc9-ac2c-6a10a4c92046 --subject <Group or user descriptor> --output table
    
    Token                                                   Effective Allow    Effective Deny
    ------------------------------------------------------  -----------------  ----------------
    PublisherSecurity                                       0                  0
    PublisherSecurity/ac515e82-560c-4af8-845b-9f7f968d8e7b  0                  0
    

Mettre à jour l’autorisation de lecture pour les hooks de service

  1. Liste des autorisations possibles que vous pouvez définir pour --allow-bit.

    • Afficher les abonnements
    • Modifier l’abonnement
    • Supprimer des abonnements
    • Publier des événements
    > az devops security permission namespace show --id cb594ebe-87dd-4fc9-ac2c-6a10a4c92046
    
    [
      {
        "actions": [
          {
            "bit": 1,
            "displayName": "View Subscriptions",
            "name": "ViewSubscriptions",
            "namespaceId": "cb594ebe-87dd-4fc9-ac2c-6a10a4c92046"
          },
          {
            "bit": 2,
            "displayName": "Edit Subscription",
            "name": "EditSubscriptions",
            "namespaceId": "cb594ebe-87dd-4fc9-ac2c-6a10a4c92046"
          },
          {
            "bit": 4,
            "displayName": "Delete Subscriptions",
            "name": "DeleteSubscriptions",
            "namespaceId": "cb594ebe-87dd-4fc9-ac2c-6a10a4c92046"
          },
          {
            "bit": 8,
            "displayName": "Publish Events",
            "name": "PublishEvents",
            "namespaceId": "cb594ebe-87dd-4fc9-ac2c-6a10a4c92046"
          }
        ],
        "dataspaceCategory": "Default",
        "displayName": "ServiceHooks",
        "elementLength": -1,
        "extensionType": null,
        "isRemotable": true,
        "name": "ServiceHooks",
        "namespaceId": "cb594ebe-87dd-4fc9-ac2c-6a10a4c92046",
        "readPermission": 1,
        "separatorValue": "/",
        "structureValue": 1,
        "systemBitMask": 0,
        "useTokenTranslator": true,
        "writePermission": 7
      }
    
  2. Définissez l’accès Affichage pour le groupe. Afficher les abonnements ServiceHooks est égal à 1 pour --allow-bit.

    > az devops security permission update --namespace-id cb594ebe-87dd-4fc9-ac2c-6a10a4c92046 --subject <Group or user descriptor> --token PublisherSecurity/ac515e82-560c-4af8-845b-9f7f968d8e7b --allow-bit 1
    
    [
      {
        "acesDictionary": {
          "Microsoft.TeamFoundation.Identity;S-1-9-1551374245-1204400969-2402986413-2179408616-3-3954173786-1521081925-2540508263-3348164168": {
            "allow": 1,
            "deny": 0,
            "descriptor": "Microsoft.TeamFoundation.Identity;S-1-9-1551374245-1204400969-2402986413-2179408616-3-3954173786-1521081925-2540508263-3348164168",
            "extendedInfo": {
              "effectiveAllow": 1
            },
            "resolvedPermissions": [
              {
                "bit": 1,
                "displayName": "View Subscriptions",
                "effectivePermission": "Allow",
                "name": "ViewSubscriptions"
              }
            ]
          }
        },
        "includeExtendedInfo": true,
        "inheritPermissions": true,
        "token": "PublisherSecurity/ac515e82-560c-4af8-845b-9f7f968d8e7b"
      }
    ]
    
  3. Obtenez le jeton d’autorisation pour voir vos modifications.

    > az devops security permission list --id cb594ebe-87dd-4fc9-ac2c-6a10a4c92046 --subject <Group or user descriptor> --output table
    
    Token                                                   Effective Allow    Effective Deny
    ------------------------------------------------------  -----------------  ----------------
    PublisherSecurity                                       0                  0
    PublisherSecurity/ac515e82-560c-4af8-845b-9f7f968d8e7b  1                  0
    

L’exemple suivant montre que l’utilisateur peut voir les abonnements de hooks de service.

Capture d’écran montrant la page ServiceHooks avec autorisation.

Réinitialiser toutes les autorisations de hooks de service d’un groupe

  • Si vous devez réinitialiser toutes les autorisations de hooks de service d’un groupe ou d’un utilisateur, vous pouvez appeler reset-all.

    > az devops security permission reset-all --id cb594ebe-87dd-4fc9-ac2c-6a10a4c92046 --subject <Group or user descriptor> --token PublisherSecurity/ac515e82-560c-4af8-845b-9f7f968d8e7b
    
    Are you sure you want to reset all explicit permissions for this user/group and token? (y/n): Y
    true
    
    > az devops security permission list --id cb594ebe-87dd-4fc9-ac2c-6a10a4c92046 --subject <Group or user descriptor> --output table
    Token                                                   Effective Allow    Effective Deny
    ------------------------------------------------------  -----------------  ----------------
    PublisherSecurity                                       0                  0
    PublisherSecurity/ac515e82-560c-4af8-845b-9f7f968d8e7b  0                  0
    
  • L’exemple suivant montre que l’utilisateur ne peut pas afficher les abonnements aux hooks de service une fois l’autorisation réinitialisée.

    Capture d’écran montrant la page ServiceHooks sans autorisation.