次の方法で共有


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 ID フェデレーション (自動) Next を選択します。

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

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

    • Subscription スコープに対して、次のパラメーターを入力します。

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

    • Machine Learning Workspace スコープに対して、次のパラメーターを入力します。

      パラメーター 説明
      サブスクリプション 必須。 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 選択し次へ

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

  3. Workload ID フェデレーション (手動) Next を選択します。

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

  4. ステップ 1: 基本:

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

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

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

      • Subscription スコープに対して、次のパラメーターを入力します。

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

        パラメーター 説明
        管理グループ ID 必須。 Azure 管理グループ ID を入力します。
        管理グループ名 必須。 Azure 管理グループ名を入力します。
      • Machine Learning Workspace スコープに対して、次のパラメーターを入力します。

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

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

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

    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. スコープ レベルを選択します。 SubscriptionManagement Group、または Machine Learning Workspace を選択します。 管理グループは、複数のサブスクリプションのアクセス、ポリシー、コンプライアンスを管理するのに役立つコンテナーです。 Machine Learning ワークスペースは、機械学習成果物を作成するための場所です。

    • Subscription スコープに対して、次のパラメーターを入力します。

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

    • Machine Learning Workspace スコープに対して、次のパラメーターを入力します。

      パラメーター 説明
      サブスクリプション 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 サービス接続] ダイアログで、Environmentを選択します。 Azure Stack を選択した場合は、https://management.local.azurestack.externalのような環境 URL を入力します。

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

    • Subscription スコープに対して、次のパラメーターを入力します。

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

      パラメーター 説明
      管理グループ ID 必須。 Azure 管理グループ ID を入力します。
      管理グループ名 必須。 Azure 管理グループ名を入力します。
    • Machine Learning Workspace スコープに対して、次のパラメーターを入力します。

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

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

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

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

  • 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. Environmentで、環境名 (Azure CloudAzure Stack、または Government クラウド オプション) を選択します。

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

    • Subscription スコープに対して、次のパラメーターを入力します。

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

      パラメーター 説明
      管理グループ ID 必須。 Azure 管理グループ ID を入力します。
      管理グループ名 必須。 Azure 管理グループ名を入力します。
    • Machine Learning Workspace スコープに対して、次のパラメーターを入力します。

      パラメーター 説明
      サブスクリプション 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 アプリ サービスへのサービス接続を作成できます。

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

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

  2. [新しいサービス接続選択しAzure Resource Manager 選択し次へ

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

  3. 認証方法プロファイルを選択し次へを選択します。

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

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

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

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

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

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

Azure Government クラウドに接続する

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

Azure Stack への接続

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

ヘルプとサポート