Azure 資源管理者サービス接続を使用して Azure に接続します。

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

Azure Resource Manager サービス接続を使用して、Azure Key Vault などの Azure リソースに接続できます。 資源管理者サービス接続を使用する場合は、毎回認証を行わなくても、パイプラインを使用して Azure App Service アプリなどの Azure リソースにデプロイできます。

Azure Resource Manager サービス接続を使用して Azure に接続するには、複数の認証オプションがあります。

  • ワークロード ID フェデレーションがあるサービス プリンシパル
  • シークレットを持つサービス プリンシパル
  • システム割り当てマネージド ID
  • パブリック プロファイル

サービス接続では、サービス プリンシパルを使用して Azure リソースで認証します。

Workload Identity フェデレーションを使用する Azure 資源管理者サービス接続を作成します。

Workload identity連邦は、シークレットを使用せずに Microsoft Entra で保護されたリソースに OpenID Connect (OIDC) を使用して認証します。 認証用のワークロード ID フェデレーションを自動的に作成することも、手動で作成することもできます。

次のすべての項目がシナリオに当てはまる場合は、このアプローチを使用することをお勧めします。

  • Azure サブスクリプションの所有者ロールが割り当てられている。
  • Azure Stack または Azure US Government 環境には接続しません。
  • 使用する Marketplace 拡張機能タスクは、Workload Identity フェデレーションをサポートするように更新されます。

詳細については、 「電源管理の使用」 を参照してください。

ワークロード ID フェデレーションがあるサービス接続を作成する (自動)

この選択により、Azure DevOps は、接続するサブスクリプション、管理グループ、または Machine Learning ワークスペースに対して自動的にクエリを実行し、認証用のワークロード ID フェデレーションを作成します。

  1. Azure DevOps プロジェクトで、 プロジェクト設定 > サービスに移動します。

    詳細については、. プロジェクト設定を開くを参照してください。

  2. [新しいサービス接続][Azure Resource Manager][次へ] の順に選択します。

    Azure Resource Manager を選択しているスクリーンショット。

  3. [Workload Identity federation (automatic)] (ワークロード ID フェデレーション (自動))、[次へ] の順に選択します。

    ワークロード ID フェデレーション (自動) 認証方法の選択のスクリーンショット。

  4. スコープ レベルを選択します。 [サブスクリプション][管理グループ]、または [Machine Learning ワークスペース] を選択します。 管理グループは、複数のサブスクリプションのアクセス、ポリシー、コンプライアンスを管理するのに役立つコンテナーです。 Machine Learning ワークスペースは機械学習アーティファクトを作成するための場所です。

    • [サブスクリプション] スコープに次のパラメーターを入力します。

      パラメーター 説明
      サブスクリプション 必須。 Azure サブスクリプションを選択します。
      リソース グループ 必須。 Azure リソース グループを選択します。
    • [管理グループ]スコープで [Azure 管理グループ] を選択します。

    • [Machine Learning ワークスペース] スコープに次のパラメーターを入力します。

      パラメーター 説明
      サブスクリプション 必須。 Azure サブスクリプションを選択します。
      リソース グループ 必須。 ワークスペースを含むリソース グループを選択します。
      Machine Learning ワークスペース 必須。 Azure Machine Learning ワークスペースを選択します。
  5. サービス接続名を入力します。

  6. 必要に応じて、サービス接続の説明を入力します。

  7. [すべてのパイプラインにアクセス許可を付与する] をオンにし、すべてのパイプラインがこのサービス接続を使用できるようにします。 このオプションを選択しない場合は、このサービス接続を使用する各パイプラインへのアクセス権を手動で付与する必要があります。

  8. [保存] を選択します。

新しいサービス接続が作成されたら、接続名をコピーし、azureSubscriptionの値としてコードに貼り付けます。

特定の Azure リソースにデプロイするには、タスクにはそのリソースに関する追加のデータが必要です。 Azure portal のリソースに移動し、データをコードにコピーします。 たとえば、Web アプリをデプロイするには、Azure App Service アプリの名前をコピーし、WebAppName の値としてコードに貼り付けます。

ワークロード ID フェデレーションがあるサービス接続を作成する (手動)

認証に既存のワークロード ID フェデレーションを使用するサービス接続を手動で作成するには、このオプションを使用します。

  1. Azure DevOps プロジェクトで、 プロジェクト設定 > サービスに移動します。

    詳細については、. プロジェクト設定を開くを参照してください。

  2. [新しいサービス接続][Azure Resource Manager][次へ] の順に選択します。

    Azure Resource Manager を選択しているスクリーンショット。

  3. [Workload Identity federation (manual)] (ワークロード ID フェデレーション (手動))、[次へ] の順に選択します。

    ワークロード ID フェデレーション (手動) 認証方法の選択のスクリーンショット。

  4. ステップ 1: 基本:

    1. サービス接続名を入力する
    2. 必要に応じて、説明を入力します。
    3. [すべてのパイプラインにアクセス許可を付与する] をオンにし、すべてのパイプラインがこのサービス接続を使用できるようにします。 このオプションを選択しない場合は、このサービス接続を使用する各パイプラインへのアクセス権を手動で付与する必要があります。
    4. [次へ] を選択します。
  5. ステップ 2: サービス プリンシパルの詳細:

    ステップ 2: サービス プリンシパルの詳細には次のパラメーターが含まれています。 次のパラメータを入力または選択できます。

    パラメーター 説明
    発行者 必須。 DevOps によって発行者の URL が自動的に作成される
    サブジェクト識別子 必須。 DevOps によってサブジェクト識別子が自動的に作成されます。
    Environment 必須。 接続先のクラウド環境を選択します。 Azure Stack を選択した場合は、https://management.local.azurestack.external のような環境 URL を入力します。
    1. [スコープ レベル] を選択します。 [サブスクリプション][管理グループ]、または [Machine Learning ワークスペース] を選択します。 管理グループは、複数のサブスクリプションのアクセス、ポリシー、コンプライアンスを管理するのに役立つコンテナーです。 Machine Learning ワークスペースは機械学習アーティファクトを作成するための場所です。

      • [サブスクリプション] スコープに次のパラメーターを入力します。

        パラメーター 説明
        サブスクリプション ID 必須。 Azure サブスクリプション ID を入力します。
        サブスクリプション名 必須。 Azure サブスクリプション名を入力します。
      • [管理グループ] スコープに次のパラメーターを入力します。

        パラメーター 説明
        管理グループ ID 必須。 Azure 管理グループ ID を入力します。
        管理グループ名 必須。 Azure 管理グループ名を入力します。
      • [Machine Learning ワークスペース] スコープに次のパラメーターを入力します。

        パラメーター 説明
        サブスクリプション ID 必須。 Azure サブスクリプション ID を入力します。
        サブスクリプション名 必須。 Azure サブスクリプション名を入力します。
        リソース グループ 必須。 ワークスペースを含むリソース グループを選択します。
        ML ワークスペース名 必須。 既存の Azure Machine Learning ワークスペースの名前を入力します。
        ML ワークスペースの場所 必須。 既存の Azure Machine Learning ワークスペースの場所を入力します。
    2. [認証] セクションで次のパラメーターを入力または選択します。

      パラメーター 説明
      サービス プリンシパル ID 必須。 サービス プリンシパル ID を入力します。
      テナント ID 必須。 テナント ID を入力します。
    3. [詳細] セクションで次のパラメーターを入力します。

      パラメーター 説明
      Connection Name 必須。 タスクのプロパティでこのサービス接続を参照するために使用する名前。 Azure サブスクリプションの名前ではありません。
      説明 省略可。 サービス接続の説明を入力します。
    4. [セキュリティ] セクションで、[すべてのパイプラインへのアクセス許可を与える] を選択してすべてのパイプラインがこのサービス接続を使用できるようにします。 このオプションを選択しない場合は、このサービス接続を使用する各パイプラインへのアクセス権を手動で付与する必要があります。

    5. [確認して保存] を選択し、サービス接続を確認して作成します。

新しいサービス接続が作成されたら、接続名をコピーし、azureSubscriptionの値としてコードに貼り付けます。

特定の Azure リソースにデプロイするには、タスクにはそのリソースに関する追加のデータが必要です。 Azure portal のリソースに移動し、データをコードにコピーします。 たとえば、Web アプリをデプロイするには、Azure App Service アプリの名前をコピーし、WebAppName の値としてコードに貼り付けます。

Workload Identity フェデレーションを使用するように既存の Azure 資源管理者サービス接続を変換します

既存の Azure 資源管理者サービス接続を、サービス プリンシパルの代わりに認証に Workload Identity フェデレーションを使用するように簡単に変換できます。 サービス接続が次の要件を満たしている場合、Azure DevOps でサービス接続変換ツールを使用できます。

  • Azure DevOps は最初にサービス接続を作成しました。 サービス接続を手動で作成する場合、Azure DevOps には独自の資格情報を変更するアクセス許可がないため、サービス接続変換ツールを使用してサービス接続を変換することはできません。
  • サービス接続を使用するプロジェクトは 1 つだけです。 プロジェクト間のサービス接続は変換できません。

サービス接続を変換するには:

  1. Azure DevOps プロジェクトで、 プロジェクト設定 > サービスに移動します。

    詳細については、. プロジェクト設定を開くを参照してください。

  2. Workload Identity を使用するように変換するサービス接続を選択します。

  3. 変換 を選択します。

    フェデレーション資格情報の変換を選択する様子を示すスクリーンショット。

    有効期限が切れたシークレットを持つ既存のサービス プリンシパルの資格情報がある場合は、変換するための別のオプションが表示されます。

    有効期限が切れた認定資格証があるときに、フェデレーション資格情報を使用するように変換するオプションを示すスクリーンショット。

  4. もう一度 [変換] を選択して、新しいサービス接続を作成することを確認します。

    変換には数分かかる場合があります。 接続を元に戻したい場合は、7 日以内に元に戻す必要があります。

スクリプトを使用して複数の Azure 資源管理者サービス接続を変換します

スクリプトを使用して複数のサービス接続を一度に更新し、認証にワークロード ID フェデレーションを使用します。

このサンプル PowerShell スクリプトでは、Azure DevOps 組織 (例: https://dev.azure.com/fabrikam-tailspin) と Azure DevOps プロジェクト (例: Space game web agent) の 2 つのパラメーターが必要です。 その後、スクリプトでは Azure DevOps プロジェクトと組織の関連付けられているサービス接続を取得します。

サービス接続を変換してワークロード ID フェデレーションを使用する場合は、まだ使用していない接続ごとに更新を確認するように求められます。 確認すると、スクリプトでは Azure DevOps REST API を使用して、ワークロード ID フェデレーションを使用するようにこれらのサービス接続を更新します。

このスクリプトを実行するには、PowerShell 7.3 以降Azure CLI が必要です。 スクリプトを .ps1 ファイルに保存し、PowerShell 7 を使用して実行します。

#!/usr/bin/env pwsh
<# 
.SYNOPSIS 
    Convert multiple Azure Resource Manager service connection(s) to use Workload identity federation

.LINK
    https://aka.ms/azdo-rm-workload-identity-conversion

.EXAMPLE
    ./convert_azurerm_service_connection_to_oidc_simple.ps1 -Project <project> -OrganizationUrl https://dev.azure.com/<organization>
#> 

#Requires -Version 7.3

param ( 
    [parameter(Mandatory=$true,HelpMessage="Name of the Azure DevOps Project")]
    [string]
    [ValidateNotNullOrEmpty()]
    $Project,

    [parameter(Mandatory=$true,HelpMessage="Url of the Azure DevOps Organization")]
    [uri]
    [ValidateNotNullOrEmpty()]
    $OrganizationUrl
) 
$apiVersion = "7.1"
$PSNativeCommandArgumentPassing = "Standard" 

#-----------------------------------------------------------
# Log in to Azure
$azdoResource = "499b84ac-1321-427f-aa17-267ca6975798" # application id of Azure DevOps 
az login --allow-no-subscriptions --scope ${azdoResource}/.default
$OrganizationUrl = $OrganizationUrl.ToString().Trim('/')

#-----------------------------------------------------------
# Retrieve the service connection
$getApiUrl = "${OrganizationUrl}/${Project}/_apis/serviceendpoint/endpoints?authSchemes=ServicePrincipal&type=azurerm&includeFailed=false&includeDetails=true&api-version=${apiVersion}"
az rest --resource $azdoResource -u "${getApiUrl} " -m GET --query "sort_by(value[?authorization.scheme=='ServicePrincipal' && data.creationMode=='Automatic' && !(isShared && serviceEndpointProjectReferences[0].projectReference.name!='${Project}')],&name)" -o json `
        | Tee-Object -Variable rawResponse | ConvertFrom-Json | Tee-Object -Variable serviceEndpoints | Format-List | Out-String | Write-Debug
if (!$serviceEndpoints -or ($serviceEndpoints.count-eq 0)) {
    Write-Warning "No convertible service connections found"
    exit 1
}

foreach ($serviceEndpoint in $serviceEndpoints) {
    # Prompt user to confirm conversion
    $choices = @(
        [System.Management.Automation.Host.ChoiceDescription]::new("&Convert", "Converting service connection '$($serviceEndpoint.name)'...")
        [System.Management.Automation.Host.ChoiceDescription]::new("&Skip", "Skipping service connection '$($serviceEndpoint.name)'...")
        [System.Management.Automation.Host.ChoiceDescription]::new("&Exit", "Exit script")
    )
    $prompt = $serviceEndpoint.isShared ? "Convert shared service connection '$($serviceEndpoint.name)'?" : "Convert service connection '$($serviceEndpoint.name)'?"
    $decision = $Host.UI.PromptForChoice([string]::Empty, $prompt, $choices, $serviceEndpoint.isShared ? 1 : 0)

    if ($decision -eq 0) {

        Write-Host "$($choices[$decision].HelpMessage)"
    } elseif ($decision -eq 1) {
        Write-Host "$($PSStyle.Formatting.Warning)$($choices[$decision].HelpMessage)$($PSStyle.Reset)"
        continue 
    } elseif ($decision -ge 2) {
        Write-Host "$($PSStyle.Formatting.Warning)$($choices[$decision].HelpMessage)$($PSStyle.Reset)"
        exit 
    }

    # Prepare request body
    $serviceEndpoint.authorization.scheme = "WorkloadIdentityFederation"
    $serviceEndpoint.data.PSObject.Properties.Remove('revertSchemeDeadline')
    $serviceEndpoint | ConvertTo-Json -Depth 4 | Write-Debug
    $serviceEndpoint | ConvertTo-Json -Depth 4 -Compress | Set-Variable serviceEndpointRequest
    $putApiUrl = "${OrganizationUrl}/${Project}/_apis/serviceendpoint/endpoints/$($serviceEndpoint.id)?operation=ConvertAuthenticationScheme&api-version=${apiVersion}"
    # Convert service connection
    az rest -u "${putApiUrl} " -m PUT -b $serviceEndpointRequest --headers content-type=application/json --resource $azdoResource -o json `
            | ConvertFrom-Json | Set-Variable updatedServiceEndpoint

    $updatedServiceEndpoint | ConvertTo-Json -Depth 4 | Write-Debug
    if (!$updatedServiceEndpoint) {
        Write-Debug "Empty response"
        Write-Error "Failed to convert service connection '$($serviceEndpoint.name)'"
        exit 1
    }
    Write-Host "Successfully converted service connection '$($serviceEndpoint.name)'"
}

サービス プリンシパル シークレットを使用する既存の Azure 資源管理者サービス接続を元に戻します

変換された自動サービス接続は、そのシークレットを使用して 7 日間元に戻すことができます。 7 日後、新しいシークレットを手動で作成します。

サービス接続を手動で作成して変換した場合、Azure DevOps には独自の資格情報を変更するアクセス許可がないため、サービス接続変換ツールを使用してサービス接続を元に戻すことはできません。

サービス接続を元に戻すには:

  1. Azure DevOps プロジェクトで、パイプライン> サービスに移動します。

  2. 元に戻す既存のサービス接続を選択します。

  3. [Revert conversion to the original scheme] (変換を元のスキーマに戻す) を選択 します。

    フェデレーション資格情報を元に戻すことを選択する様子を示すスクリーンショット。

  4. もう一度 [元に戻す] を選んで選択を確定します。

サービス プリンシパル シークレットを使用する Azure Resource Manager サービス接続を作成します

サービス プリンシパル シークレットを使用して、Azure リソースに対する認証を行うサービス接続を設定できます。 ユーザーがサービス接続を通じてアクセスする Azure リソースのアクセス許可をさらに制限する必要がある場合にこのアプローチが便利です。

サービス接続は手動でも自動でも構成できます。 Azure Pipelines 組織と Azure サブスクリプションの所有者としてサインインし、ユーザーがサービス接続を介してアクセスする Azure リソースのアクセス許可をさらに制限する必要がない場合は、自動アプローチを使用することをお勧めします。

次のすべての項目がシナリオに当てはまる場合は、このアプローチを使用することをお勧めします。

  • Azure Pipelines 組織および Azure サブスクリプションの所有者としてサインインしている。
  • ユーザーがサービス接続を通じてアクセスする Azure リソースのアクセス許可をさらに制限する必要はありません。
  • Azure StackまたはAzure Government Cloudに接続していません。
  • Azure DevOps Server 2019 または以前のバージョンの Team Foundation Server から接続していません。

サービス接続を作成するには:

  1. Azure DevOps プロジェクトで、 プロジェクト設定 > サービスに移動します。

    詳細については、. プロジェクト設定を開くを参照してください。

  2. [新しいサービス接続][Azure Resource Manager][次へ] の順に選択します。

    Azure Resource Manager の選択を示すスクリーンショット。

  3. [サービス プリンシパル (自動)][次へ] を選択します。

    サービス プリンシパル (自動) 認証方法の選択を示すスクリーンショット。

  4. [スコープ レベル] を選択します。 [サブスクリプション][管理グループ]、または [Machine Learning ワークスペース] を選択します。 管理グループは、複数のサブスクリプションのアクセス、ポリシー、コンプライアンスを管理するのに役立つコンテナーです。 Machine Learning ワークスペースは機械学習アーティファクトを作成するための場所です。

    • [サブスクリプション] スコープに次のパラメーターを入力します。

      パラメーター 説明
      サブスクリプション ID 必須。 Azure サブスクリプション ID を入力します。
      サブスクリプション名 必須。 Azure サブスクリプション名を入力します。
    • [管理グループ] スコープで、次のパラメーターを入力して Azure 管理グループを選択します。

    • [Machine Learning ワークスペース] スコープに次のパラメーターを入力します。

      パラメーター 説明
      サブスクリプション ID 必須。 Azure サブスクリプション ID を入力します。
      サブスクリプション名 必須。 Azure サブスクリプション名を入力します。
      リソース グループ 必須。 ワークスペースを含むリソース グループを選択します。
      ML ワークスペース名 必須。 既存の Azure Machine Learning ワークスペースの名前を入力します。
      ML ワークスペースの場所 必須。 既存の Azure Machine Learning ワークスペースの場所を入力します。
  5. サービス接続名を入力します。

  6. 必要に応じて、サービス接続の説明を入力します。

  7. [すべてのパイプラインにアクセス許可を付与する] をオンにし、すべてのパイプラインがこのサービス接続を使用できるようにします。 このオプションを選択しない場合は、このサービス接続を使用する各パイプラインへのアクセス権を手動で付与する必要があります。

  8. [保存] を選択します。

新しいサービス接続が作成されたら、次の手順に従います。

  • クラシック エディターを使用する場合は、パイプラインの Azure サブスクリプション設定で割り当てた接続名を選択します。
  • YAML ファイルを使用する場合は、接続名を azureSubscriptionの値としてコードにコピーします。

特定の Azure リソースにデプロイするには、リソースに関する詳細情報をタスクに追加します。

  • クラシック エディターを使用する場合は、タスクに追加するデータを選択します。 たとえば、App Service 名を選択します。
  • YAML ファイルを使用する場合は、Azure portal のリソースに移動します。 必要なデータをコピーし、タスク コードに貼り付けます。 たとえば、Web アプリをデプロイするには、App Service アプリの名前をコピーし、それをタスク YAML のWebAppNameの値として貼り付けます。

メモ

このアプローチに従うと、Azure DevOps は Azure Microsoft Entra ID と接続し、3 か月間有効なシークレットを含むアプリ登録を作成します。 サービス接続の有効期限が近づくと、Microsoft Entra ID に次のプロンプトが表示されます: 証明書またはシークレットの有効期限が間もなく切れます。新しいものを作成してください。 このシナリオでは、サービス接続を更新する必要があります。

サービス接続を更新するには、Azure DevOps ポータルで接続を編集し、検証を選択します。 編集内容を保存すると、サービス接続はさらに 3 か月間有効になります。

シークレットを作成する代わりに、Workload Identity フェデレーションを使用することをお勧めします。 Workload Identity フェデレーションを使用する場合、シークレットをローテーションする必要はなく、アプリの登録によって本来の目的が維持されます。 ワークロード ID フェデレーションの使用を開始するには、サービス接続の詳細ページに移動し、[変換] を選択します。 サービス接続は、シークレットの代わりに Workload Identity フェデレーションを使用するように変換されます。 詳細については、Workload Identity フェデレーションを使用するように既存の Azure 資源管理者サービス接続を変換するを参照してください。

詳細については、Azure資源管理者サービス接続のトラブルシューティングを参照してください。

このアプローチの使用に問題がある場合 (ドロップダウン リストにサブスクリプションが表示されないなど)、またはユーザーのアクセス許可を制限したい場合は、代わりにサービス プリンシパルまたはマネージド ID がある仮想マシンを使用できます。

既存のサービス プリンシパルを使用する Azure 資源管理者サービス接続を作成します

定義済みのアクセス許可のセットを使用する必要があり、この目的のためにサービス プリンシパルがまだ定義されていない場合は、次のチュートリアルのいずれかに従って新しいサービス プリンシパルを作成します。

既存のサービス プリンシパルを使用するサービス接続を作成するには、次のようにします。

  1. Azure DevOps プロジェクトで、 プロジェクト設定 > サービスに移動します。

    詳細については、. プロジェクト設定を開くを参照してください。

  2. [新しいサービス接続][Azure Resource Manager][次へ] の順に選択します。

    Azure Resource Manager の選択を示すスクリーンショット。

  3. [サービス プリンシパル (手動)][次へ] の順に選択します。

    サービス プリンシパル (手動) 認証方法の選択を示すスクリーンショット。

  4. [新しい Azure サービス接続] ダイアログで [環境] を選択します。 Azure Stack を選択した場合は、https://management.local.azurestack.external のような環境 URL を入力します。

  5. [スコープ レベル] を選択します。 [サブスクリプション][管理グループ]、または [Machine Learning ワークスペース] を選択します。 管理グループは、複数のサブスクリプションのアクセス、ポリシー、コンプライアンスを管理するのに役立つコンテナーです。 Machine Learning ワークスペースは機械学習アーティファクトを作成するための場所です。

    • [サブスクリプション] スコープに次のパラメーターを入力します。

      パラメーター 説明
      サブスクリプション ID 必須。 Azure サブスクリプション ID を入力します。
      サブスクリプション名 必須。 Azure サブスクリプション名を入力します。
    • [管理グループ] スコープに次のパラメーターを入力します。

      パラメーター 説明
      管理グループ ID 必須。 Azure 管理グループ ID を入力します。
      管理グループ名 必須。 Azure 管理グループ名を入力します。
    • [Machine Learning ワークスペース] スコープに次のパラメーターを入力します。

      パラメーター 説明
      サブスクリプション ID 必須。 Azure サブスクリプション ID を入力します。
      サブスクリプション名 必須。 Azure サブスクリプション名を入力します。
      リソース グループ 必須。 ワークスペースを含むリソース グループを選択します。
      ML ワークスペース名 必須。 既存の Azure Machine Learning ワークスペースの名前を入力します。
      ML ワークスペースの場所 必須。 既存の Azure Machine Learning ワークスペースの場所を入力します。
  6. [認証] セクションで次のパラメーターを入力または選択します。

    パラメーター 説明
    サービス プリンシパル ID 必須。 サービス プリンシパル ID を入力します。
    資格情報 [サービス プリンシパル キー] または [証明書] を選択します。 [サービス プリンシパル キー] を選択した場合はキー (パスワード) を入力します。 [証明書] を選択した場合は証明書を入力します。
    テナント ID 必須。 テナント ID を入力します。
    確認 入力した設定を検証する場合に選択します。
  7. [詳細] セクションで次のパラメーターを入力します。

    パラメーター 説明
    Connection Name 必須。 タスクのプロパティでこのサービス接続を参照するために使用する名前。 Azure サブスクリプションの名前ではありません。
    説明 省略可。 サービス接続の説明を入力します。
    Security [すべてのパイプラインにアクセス許可を付与する] をオンにし、すべてのパイプラインがこのサービス接続を使用できるようにします。 このオプションを選択しない場合は、このサービス接続を使用する各パイプラインへのアクセス権を手動で付与する必要があります。
  8. [確認して保存] を選択し、サービス接続を確認して作成します。

  1. Azure DevOps プロジェクトで、 プロジェクト設定 > サービスに移動します。

    詳細については、. プロジェクト設定を開くを参照してください。

  2. [新しいサービス接続][Azure Resource Manager][次へ] の順に選択します。

    Azure Resource Manager の選択を示すスクリーンショット。

  3. [サービス プリンシパル (手動)][次へ] の順に選択します。

    サービス プリンシパル (手動) 認証方法の選択を示すスクリーンショット。

  4. [新しい Azure サービス接続] ダイアログで [環境] を選択します。 Azure Stack を選択した場合は、https://management.local.azurestack.external のような環境 URL を入力します。

  5. [スコープ レベル] を選択します。 サブスクリプションまたは管理グループを選択します。 管理グループは、複数のサブスクリプションのアクセス、ポリシー、コンプライアンスを管理するのに役立つコンテナーです。

    • [サブスクリプション] スコープに次のパラメーターを入力します。

      パラメーター 説明
      サブスクリプション ID 必須。 Azure サブスクリプション ID を入力します。
      サブスクリプション名 必須。 Azure サブスクリプション名を入力します。
    • [管理グループ] スコープに次のパラメーターを入力します。

      パラメーター 説明
      管理グループ ID 必須。 Azure 管理グループ ID を入力します。
      管理グループ名 必須。 Azure 管理グループ名を入力します。
  6. [認証] セクションで次のパラメーターを入力または選択します。

    パラメーター 説明
    サービス プリンシパル ID 必須。 サービス プリンシパル ID を入力します。
    資格情報 [サービス プリンシパル キー] または [証明書] を選択します。 [サービス プリンシパル キー] を選択した場合はキー (パスワード) を入力します。 [証明書] を選択した場合は証明書を入力します。
    テナント ID 必須。 テナント ID を入力します。
    確認 入力した設定を検証する場合に選択します。
  7. [詳細] セクションで次のパラメーターを入力します。

    パラメーター 説明
    Connection Name 必須。 タスクのプロパティでこのサービス接続を参照するために使用する名前。 Azure サブスクリプションの名前ではありません。
    説明 省略可。 サービス接続の説明を入力します。
    Security [すべてのパイプラインにアクセス許可を付与する] をオンにし、すべてのパイプラインがこのサービス接続を使用できるようにします。 このオプションを選択しない場合は、このサービス接続を使用する各パイプラインへのアクセス権を手動で付与する必要があります。
  8. [確認して保存] を選択し、サービス接続を確認して作成します。

  1. Azure DevOps プロジェクトで、 プロジェクト設定 > サービスに移動します。

    詳細については、. プロジェクト設定を開くを参照してください。

  2. [新しいサービス接続] を選択し、次に [Azure Resource Manager] を選択します。

    Azure Resource Manager の選択を示すスクリーンショット。

  3. [Azure Resource Manager サービス接続の追加] ダイアログで、次のように各フィールドに入力します。

    [Azure Resource Manager サービス接続の追加] のスクリーンショット。

    1. [接続名] を入力します。

    2. [環境] を選択します。 Azure Stack を選択した場合は、https://management.local.azurestack.external のような環境 URL を入力します。

    3. [スコープ レベル][サブスクリプション]、または [管理グループ] を選択します。 管理グループは、複数のサブスクリプションのアクセス、ポリシー、コンプライアンスを管理するのに役立つコンテナーです。

      • [サブスクリプション] スコープに次のパラメーターを入力します。

        パラメーター 説明
        サブスクリプション ID 必須。 Azure サブスクリプション ID を入力します。
        サブスクリプション名 必須。 Azure サブスクリプション名を入力します。
      • [管理グループ] スコープに次のパラメーターを入力します。

        パラメーター 説明
        管理グループ ID 必須。 Azure 管理グループ ID を入力します。
        管理グループ名 必須。 Azure 管理グループ名を入力します。
    4. [サービス プリンシパル ID] を入力します。

    5. 資格情報の種類を選択します。

      • サービス プリンシパル キー: サービス プリンシパル キー (パスワード) を入力します。
      • 証明書: 証明書セクションと秘密キー セクションの両方を含めて、.perm ファイルの内容を入力します。
    6. [テナント ID] を入力します。

    7. [接続確認] を選択して、サービス接続を検証します。

    8. 必要に応じて、[この接続の使用をすべてのパイプラインに許可します] を選択します。 このオプションを選択しない場合は、このサービス接続を使用する各パイプラインへのアクセス権を手動で付与する必要があります。

    9. [保存] を選択してサービス接続を作成します。

新しいサービス接続が作成されたら、次の手順に従います。

  • UI でサービス接続を使用する場合は、パイプラインのAzure サブスクリプション設定で割り当てた接続名を選択します。
  • YAML ファイルでサービス接続を使用する場合は、接続名をコピーし、azureSubscriptionの値としてコードに貼り付けます。

必要に応じて、サービス プリンシパルを変更して、適切なアクセス許可を公開します。

サービス プリンシパルを使用した認証についての詳細については、Azure サブスクリプション リソースへのアクセスを管理するためのロールベースのアクセス制御の使用、または ブログ記事Visual Studio でサービス プリンシパルを使用して Azure リソース グループの展開を自動化する 、もしくはを参照してください。

詳細については、Azure Resource Manager サービス接続のトラブルシューティングを参照してください。

マネージド ID を使用する VM への Azure Resource Manager サービス接続を作成する

Note

マネージド ID を使用して認証するには、Azure 仮想マシン (VM) 上でセルフホステッド エージェントを使用する必要があります。

Microsoft Entra ID の Azure マネージド IDを使用するように Azure VM 上のセルフホステッド エージェントを構成できます。 このシナリオでは、システム割り当てマネージド ID (サービス プリンシパル) を使用して、Microsoft Entra ID をサポートする任意の Azure リソース (Azure Key Vault のインスタンスなど) へのアクセス権をエージェントに付与します。

  1. Azure DevOps プロジェクトで、 プロジェクト設定 > サービスに移動します。

    詳細については、. プロジェクト設定を開くを参照してください。

  2. [新しいサービス接続][Azure Resource Manager][次へ] の順に選択します。

    サービス接続の種類を選択する様子を示すスクリーンショット。

  3. [認証方法] として [マネージド ID] を選択します。

    マネージド サービス ID 認証方法の選択に移動する様子を示すスクリーンショット。

  4. [環境] では、環境名 (Azure CloudAzure Stack、または Government クラウド オプション) を選択します。

  5. [スコープ レベル] を選択します。 [サブスクリプション][管理グループ]、または [Machine Learning ワークスペース] を選択します。 管理グループは、複数のサブスクリプションのアクセス、ポリシー、コンプライアンスを管理するのに役立つコンテナーです。 Machine Learning ワークスペースは機械学習アーティファクトを作成するための場所です。

    • [サブスクリプション] スコープに次のパラメーターを入力します。

      パラメーター 説明
      サブスクリプション ID 必須。 Azure サブスクリプション ID を入力します。
      サブスクリプション名 必須。 Azure サブスクリプション名を入力します。
    • [管理グループ] スコープに次のパラメーターを入力します。

      パラメーター 説明
      管理グループ ID 必須。 Azure 管理グループ ID を入力します。
      管理グループ名 必須。 Azure 管理グループ名を入力します。
    • [Machine Learning ワークスペース] スコープに次のパラメーターを入力します。

      パラメーター 説明
      サブスクリプション ID 必須。 Azure サブスクリプション ID を入力します。
      サブスクリプション名 必須。 Azure サブスクリプション名を入力します。
      リソース グループ 必須。 ワークスペースを含むリソース グループを選択します。
      ML ワークスペース名 必須。 既存の Azure Machine Learning ワークスペースの名前を入力します。
      ML ワークスペースの場所 必須。 既存の Azure Machine Learning ワークスペースの場所を入力します。
  6. [テナント ID] を入力します。

  7. [Service connection name] (サービス接続名) を入力します。

  8. 必要に応じて、サービス接続の説明を入力します。

  9. [すべてのパイプラインにアクセス許可を付与する] をオンにし、すべてのパイプラインがこのサービス接続を使用できるようにします。 このオプションを選択しない場合は、このサービス接続を使用する各パイプラインへのアクセス権を手動で付与する必要があります。

  10. [保存] を選択します。

  11. 新しいサービス接続が作成されたら、次の手順に従います。

    • UI でサービス接続を使用する場合は、パイプラインのAzure サブスクリプション設定で割り当てた接続名を選択します。
    • YAML ファイルでサービス接続を使用する場合は、接続名を azureSubscriptionの値としてコードにコピーします。
  12. VM (エージェント) に適切なアクセス許可があることを確認します。

    たとえば、コードで Azure 資源管理者を呼び出す必要がある場合は、Microsoft Entra ID のロールベースのアクセス制御 (RBAC) を使用して、VM に適切なロールを割り当てます。

    詳細については、Azure リソースの管理された ID をどのように使用できますか?、および Azure サブスクリプションのリソースへのアクセスを管理するためのロールベースのアクセス制御の使用を参照してください。

プロセスの詳細については、Azure Resource Manager サービス接続のトラブルシューティングを参照してください。

発行プロファイルを使用してサービス接続を作成する

発行プロファイルを使用してサービス接続を作成できます。 発行プロファイルを使用して、Azure App Service へのサービス接続を作成できます。

  1. Azure DevOps プロジェクトで、 プロジェクト設定 > サービスに移動します。

    詳細については、. プロジェクト設定を開くを参照してください。

  2. [新しいサービス接続][Azure Resource Manager][次へ] の順に選択します。

    Azure Resource Manager の選択のスクリーンショット。

  3. 認証方法として [発行プロファイル] を選択して [次へ] を選択します。

    発行プロファイル認証方法の選択のスクリーンショット。

  4. 次のパラメーターを入力します。

    パラメーター 説明
    サブスクリプション 必須。 既存の Azure サブスクリプションを選択します。 Azure サブスクリプションまたはインスタンスが表示されない場合は、「Azure資源管理者サービス接続のトラブルシューティング」を参照してください。
    WebApp 必須。 Azure App Service アプリの名前を入力します。
    サービス接続名 必須。 タスクのプロパティでこのサービス接続を参照するために使用する名前。 Azure サブスクリプションの名前ではありません。
    説明 省略可。 サービス接続の説明。
  5. [すべてのパイプラインにアクセス許可を付与する] をオンにし、すべてのパイプラインがこのサービス接続を使用できるようにします。 このオプションを選択しない場合は、このサービス接続を使用する各パイプラインへのアクセス権を手動で付与する必要があります。

  6. [保存] を選択します。

新しいサービス接続が作成されたら、次の手順に従います。

  • UI でサービス接続を使用する場合は、パイプラインのAzure サブスクリプション設定で割り当てた接続名を選択します。
  • YAML ファイルでサービス接続を使用する場合は、接続名をコピーし、azureSubscriptionの値としてコードに貼り付けます。

Azure Government クラウドに接続する

Azure Government Cloud への接続については、「Azure Pipelines から接続する (Azure Government Cloud)」を参照してください。

Azure Stack への接続

Azure Stack への接続については、次の記事を参照してください:

ヘルプとサポート