- [アーティクル]
-
-
プールの作成時に、 Security タブを使用し、プールの作成後に Security 設定ウィンドウを使用して、マネージド DevOps プールのセキュリティ設定を構成できます。
既定では、Managed DevOps プールは、組織内のすべてのプロジェクトに付与されたプールへのアクセス権を持つ単一の組織用に構成されます。 必要に応じて、組織内の特定のプロジェクトへのアクセスを制限したり、必要に応じて追加の組織へのアクセスを許可したりできます。
1 つの組織でプールを使用する
既定では、Managed DevOps プールは、プールの作成時に指定する単一の Azure DevOps 組織で使用するように構成されています。 プールが 1 つの組織用に構成されている場合、組織名が表示され、[プールの設定] に構成されます
既定では、 プールをすべてのプロジェクトに追加 は Yes に設定され、Managed DevOps プールへのアクセスは組織内のすべてのプロジェクトに付与されます。 [ No を選択して、プールを使用できる組織内のプロジェクトを制限するプロジェクトの一覧を指定します。
組織は、Managed DevOps Pools リソースの organizationProfile
プロパティで構成されます。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"name": "fabrikam-managed-pool",
"type": "microsoft.devopsinfrastructure/pools",
"apiVersion": "2024-10-19",
"location": "eastus",
"properties": {
...
"organizationProfile": {
"organizations": [
{
"url": "https://dev.azure.com/fabrikam-tailspin",
"projects": [],
"parallelism": 4
}
],
"permissionProfile": {
"kind": "CreatorOnly"
},
"kind": "AzureDevOps"
}
}
]
}
organizationProfile
セクションには、次のプロパティがあります。
プロパティ |
説明 |
organizations |
プールを使用できる組織の一覧。 url は組織の URL を指定します。 projects はプールを使用できるプロジェクト名の一覧であり (空のリストは組織内のすべてのプロジェクトをサポートします)、 parallelism はこの組織で使用できるエージェントの数を指定します。 組織の並列処理の合計は、プールの最大エージェント設定と一致する必要があります。 |
permissionProfile |
Azure DevOps プールの作成時に付与されるアクセス許可を指定します。 この値は、プールの作成時にのみ設定できます。 使用できる値は、Inherit 、CreatorOnly 、および SpecificAccounts です。 specificAccounts を指定する場合は、1 つの電子メール アドレスまたは users プロパティの電子メール アドレスの一覧を指定します。それ以外の場合は、users を省略します。 詳細については、「 Pool の管理アクセス許可」を参照してください。 |
kind |
この値は、プールの組織の種類を指定し、 Azure DevOps に設定する必要があります。 |
組織は、プールの作成またはをするときに、organization-profile
パラメーターで構成されます。
az mdp pool create \
--organization-profile organization-profile.json
# other parameters omitted for space
次の例は、parallelism
が 1
に設定されたfabrikam-tailspin
組織内のすべてのプロジェクトに対して構成されているorganization-profile
オブジェクトを示しています。
{
"AzureDevOps":
{
"organizations": [
{
"url": "https://dev.azure.com/fabrikam-tailspin",
"projects": [],
"parallelism": 1
}
]
}
}
organizationProfile
セクションには、次のプロパティがあります。
プロパティ |
説明 |
AzureDevOps |
この値は、 organization-profile で定義されているオブジェクトの名前であり、 Azure DevOps に設定する必要があります。 |
organizations |
プールを使用できる組織の一覧。 url は組織の URL を指定します。 projects はプールを使用できるプロジェクト名の一覧であり (空のリストは組織内のすべてのプロジェクトをサポートします)、 parallelism はこの組織で使用できるエージェントの数を指定します。 組織の並列処理の合計は、プールの最大エージェント設定と一致する必要があります。 |
permissionProfile |
Azure DevOps プールの作成時に付与されるアクセス許可を指定します。 この値は、プールの作成時にのみ設定できます。 使用できる値は、Inherit 、CreatorOnly 、および SpecificAccounts です。 specificAccounts を指定する場合は、1 つの電子メール アドレスまたは users プロパティの電子メール アドレスの一覧を指定します。それ以外の場合は、users を省略します。 詳細については、「 Pool の管理アクセス許可」を参照してください。 |
複数の組織でプールを使用する
複数の組織でプールを使用複数の Azure DevOps 組織でプールを使用できるようにします。 各組織について、プールの使用を許可するプロジェクトを指定するか、空白のままにしてすべてのプロジェクトを許可します。 プールの Maximum エージェントで指定されたコンカレンシーの部分を指定して、各組織にParallelismを構成して、各組織に割り当てます。 すべての組織の並列処理の合計は、プールの最大コンカレンシーと等しい必要があります。 たとえば、 Maximum エージェント が 5 に設定されている場合、指定した組織の並列処理の合計は 5 である必要があります。 Maximum エージェントが 1 に設定されている場合、プールは 1 つの組織でのみ使用できます。
次の例では、fabrikam-tailspin 組織内の FabrikamResearch および FabrikamTest プロジェクト、および fabrikam-blue 組織内のすべてのプロジェクトでプールを使用できるように構成されています。
The sum of parallelism for all organizations must equal the max concurrency.
などのエラーが発生した場合は、プールの Maximum エージェント数が Parallelism 列の合計と一致していることを確認します。
組織の一覧に組織を追加して、複数の組織で使用するようにプールを構成します。 次の例では、2 つの組織が構成されています。 最初の組織はすべてのプロジェクトにマネージド DevOps プールを使用するように構成され、2 番目の組織は 2 つのプロジェクトに制限されています。 この例では、プールのエージェントの最大設定は 4 であり、各組織はこれら 4 つのエージェントのうち 2 つを使用できます。
"organizationProfile": {
"organizations": [
{
"url": "https://dev.azure.com/fabrikam-tailspin",
"projects": [],
"parallelism": 2
},
{
"url": "https://dev.azure.com/fabrikam-prime",
"projects": [ "fabrikam-dev", "fabrikam-test" ],
"parallelism": 2
}
],
"permissionProfile": {
"kind": "CreatorOnly"
},
"kind": "AzureDevOps"
}
組織は、プールの作成またはをするときに、organization-profile
パラメーターで構成されます。
az mdp pool create \
--organization-profile organization-profile.json
# other parameters omitted for space
組織の一覧に組織を追加して、複数の組織で使用するようにプールを構成します。 次の例では、2 つの組織が構成されています。 最初の組織はすべてのプロジェクトにマネージド DevOps プールを使用するように構成され、2 番目の組織は 2 つのプロジェクトに制限されています。 この例では、プールのエージェントの最大設定は 4 であり、各組織はこれら 4 つのエージェントのうち 2 つを使用できます。
{
"AzureDevOps":
{
"organizations": [
{
"url": "https://dev.azure.com/fabrikam-tailspin",
"projects": [],
"parallelism": 2
},
{
"url": "https://dev.azure.com/fabrikam-prime",
"projects": [ "fabrikam-dev", "fabrikam-test" ],
"parallelism": 2
}
]
}
}
テストで UI テスト用の対話型ログインが必要な場合は、 EnableInteractiveMode 設定を有効にして対話型ログインを有効にします。
対話型モードは、fabricProfile
プロパティの osProfile
セクションで構成されます。 logonType
をInteractive
に設定して対話型モードを有効にするか、対話モードを無効にするService
します。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"name": "fabrikam-managed-pool",
"type": "microsoft.devopsinfrastructure/pools",
"apiVersion": "2024-10-19",
"location": "eastus",
"properties": {
...
"fabricProfile": {
"sku": {...},
"images": [...],
"osProfile": {
"secretsManagementSettings": {...},
"logonType": "Interactive"
},
"storageProfile": {...},
"kind": "Vmss"
}
}
]
}
対話型モードは、プールの作成またはをする場合に、fabric-profile
パラメーターのosProfile
セクションのlogonType
プロパティ使用して構成されます。
az mdp pool create \
--fabric-profile fabric-profile.json
# other parameters omitted for space
次の例は、Interactive
モードが有効になっているfabric-profile.json ファイルのosProfile
セクションを示しています。
{
"vmss": {
"sku": {...},
"images": [...],
"osProfile": {
"secretsManagementSettings": {...},
"logonType": "Interactive"
},
"storageProfile": {...}
}
}
プール管理のアクセス許可
マネージド DevOps プール作成プロセスの一環として、組織レベルのエージェント プールが Azure DevOps に作成されます。 Pool の管理アクセス許可設定では、新しく作成された Azure DevOps プールの管理者ロールを付与するユーザーを指定します。 Managed DevOps プールの作成後に Azure DevOps エージェント プールのアクセス許可を表示および管理するには、「 エージェント プールの作成と管理 - エージェント プールのセキュリティを参照してください。
- 作成者のみ - マネージド DevOps プールを作成したユーザーが Azure DevOps エージェント プールの管理者として追加され、エージェント プールのセキュリティ設定で Inheritance が Off に設定されます。 Creator のみ が既定の設定です。
- プロジェクトからアクセス許可を継承 - Managed DevOps プールを作成したユーザーが Azure DevOps エージェント プールの管理者として追加され、エージェント プールのセキュリティ設定で Inheritance が On に設定されます。
- 特定のアカウント - Azure DevOps で作成されたエージェント プールの管理者として追加するアカウントを指定します。 既定では、Managed DevOps プールの作成者が一覧に追加されます。
Note
Pool の管理アクセス許可設定は、プールの作成時に Security タブで構成され、プールの作成後に Security 設定には表示されません。 Managed DevOps プールの作成後に Azure DevOps エージェント プールのアクセス許可を表示および管理するには、「 エージェント プールの作成と管理 - エージェント プールのセキュリティを参照してください。
プール管理アクセス許可は、Managed DevOps Pools リソースの organizationProfile
セクションの permissionsProfile
プロパティで構成されます。
{
"organizationProfile": {
"organizations": [...],
"permissionProfile": {
"kind": "CreatorOnly"
},
"kind": "AzureDevOps"
}
permissionProfile
プロパティは、プールの作成時にのみ設定できます。 使用できる値は、Inherit
、CreatorOnly
、および SpecificAccounts
です。
CreatorOnly
- Managed DevOps プールを作成したユーザーが Azure DevOps エージェント プールの管理者として追加され、エージェント プールのセキュリティ設定で Inheritance が Off に設定されます。 Creator のみ が既定の設定です。
Inherit
- Managed DevOps プールを作成したユーザーが Azure DevOps エージェント プールの管理者として追加され、エージェント プールのセキュリティ設定で Inheritance が On に設定されます。
SpecificAccounts
- Azure DevOps で作成されたエージェント プールの管理者として追加するアカウントを指定します。 既定では、Managed DevOps プールの作成者が一覧に追加されます。 users
プロパティの 1 つの電子メール アドレスまたは電子メール アドレスの一覧を指定します。それ以外の場合はusers
を省略します。
{
"organizationProfile": {
"organizations": [...],
"permissionProfile": {
"kind": "SpecificAccounts",
"users" : ["User1@fabrikam.com", "User2@fabrikam.com" ]
},
"kind": "AzureDevOps"
}
プールの管理アクセス許可は、プールの作成時に organization-profile
パラメーター 構成。
az mdp pool create \
--organization-profile organization-profile.json
# other parameters omitted for space
{
"AzureDevOps":
{
"organizations": [...],
"permissionProfile": {
"kind": "CreatorOnly"
}
}
}
permissionProfile
プロパティは、プールの作成時にのみ設定できます。 使用できる値は、Inherit
、CreatorOnly
、および SpecificAccounts
です。
CreatorOnly
- Managed DevOps プールを作成したユーザーが Azure DevOps エージェント プールの管理者として追加され、エージェント プールのセキュリティ設定で Inheritance が Off に設定されます。 Creator のみ が既定の設定です。
Inherit
- Managed DevOps プールを作成したユーザーが Azure DevOps エージェント プールの管理者として追加され、エージェント プールのセキュリティ設定で Inheritance が On に設定されます。
SpecificAccounts
- Azure DevOps で作成されたエージェント プールの管理者として追加するアカウントを指定します。 既定では、Managed DevOps プールの作成者が一覧に追加されます。 users
プロパティの 1 つの電子メール アドレスまたは電子メール アドレスの一覧を指定します。それ以外の場合はusers
を省略します。
{
"AzureDevOps" : {
"organizationProfile": {
"organizations": [...],
"permissionProfile": {
"kind": "SpecificAccounts",
"users" : ["User1@fabrikam.com", "User2@fabrikam.com" ]
}
}
}
Key Vault の構成
マネージド DevOps プールには、プロビジョニング中に Azure Key Vault から証明書をフェッチする機能が用意されています。つまり、証明書は、Azure DevOps パイプラインを実行する時点までにマシン上に既に存在します。 この機能を使用するには、プールで id を構成する必要があります。この ID には、Key Vault からシークレットをフェッチするための Key Vault シークレット ユーザーアクセス許可が必要です。 id を Key Vault Secrets User ロールに割り当てるには、Azure ロールベースのアクセス制御を使用した Key Vault のキー、証明書、シークレットへの Provide アクセスを参照してください。
Note
api-version 2024-10-19
時点では、この機能を使用する場合は、プールで 1 つの ID のみを使用できます。 複数の ID のサポートは近日中に追加される予定です。
Key Vault からシークレットをフェッチするために使用できる ID は 1 つだけです。
Key Vault の統合は、 Settings > Security で構成されます。
Note
Key Vault 統合設定は、プールの作成後にのみ構成できます。 Key Vault 統合設定はプールの作成時に構成できません。また、プールの作成時に [ Security ] タブには表示されません。
Azure Key Vault は、fabricProfile
プロパティの osProfile
セクションで構成されます。 目的の証明書にアクセスできるように secretManagementSettings
を設定します。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"name": "fabrikam-managed-pool",
"type": "microsoft.devopsinfrastructure/pools",
"apiVersion": "2024-10-19",
"location": "eastus",
"properties": {
...
"fabricProfile": {
"sku": {...},
"images": [...],
"osProfile": {
"secretsManagementSettings": {
"certificateStoreLocation": "LocalMachine",
"observedCertificates": [
"https://<keyvault-uri>/secrets/<certificate-name>"
],
"keyExportable": false
}
},
"storageProfile": {...},
"kind": "Vmss"
}
}
]
}
Azure Key Vault は、プールの作成またはするときに、fabricProfile
プロパティのosProfile
セクションで構成されます。 目的の証明書にアクセスできるように secretManagementSettings
を設定します。
az mdp pool create \
--fabric-profile fabric-profile.json
# other parameters omitted for space
次の例は、secretsManagementSettings
構成済みのfabric-profile.json ファイルのosProfile
セクションを示しています。
{
"vmss": {
"sku": {...},
"images": [...],
"osProfile": {
"secretsManagementSettings": {
"certificateStoreLocation": "LocalMachine",
"observedCertificates": [
"https://<keyvault-uri>/secrets/<certificate-name>"
],
"keyExportable": false
},
"logonType": "Interactive"
},
"storageProfile": {...}
}
}
SecretManagementSettings の構成
プール上の SecretManagementSettings
を使用して取得された証明書は、Key Vault 内で発行された最新バージョンと自動的に同期されます。 これらのシークレットは、Azure DevOps パイプラインを実行する時点までにマシン上に存在します。つまり、時間を節約し、証明書をフェッチするためのタスクを削除できます。
重要
アクセス許可またはネットワークの問題が原因でシークレットを Key Vault からフェッチできない場合、エージェント仮想マシンのプロビジョニングは失敗します。
関連項目