既存の実行アカウントからマネージド ID に移行する

重要

Azure Automation 実行アカウント (クラシック実行アカウントを含む) は 2023 年 9 月 30 日に廃止され、マネージド ID に置き換えられました。 Azure portal を通じて実行アカウントを作成または更新することはできなくなります。

移行の頻度と、実行アカウントの作成と証明書の更新のサポート タイムラインについて詳しくは、よく寄せられる質問に関する記事をご覧ください。

Azure Automation の実行アカウントは、Azure Resource Manager またはクラシック デプロイ モデルによってデプロイされたリソースを管理するための認証を提供します。 実行アカウントが作成されるたびに、Microsoft Entra アプリケーションが登録され、自己署名証明書が生成されます。 証明書の有効期間は 1 か月です。 毎月、有効期限が切れる前に証明書を更新すると、Automation アカウントは機能し続けますが、オーバーヘッドが増加します。

マネージド ID を使うように Automation アカウントを構成できるようになりました。これは、Automation アカウントを作成するときの既定のオプションです。 この機能を使うと、Automation アカウントは資格情報を交換することなく、Azure リソースに対して認証を行うことができます。 マネージド ID を使うと、証明書を更新したり、サービス プリンシパルを管理したりするオーバーヘッドがなくなります。

マネージド ID には、システム割り当てユーザー割り当てがあります。 新しい Automation アカウントを作成するときは、システム割り当てマネージド ID が有効になります。

前提条件

実行アカウントまたはクラシック実行アカウントからマネージド ID に移行する前に:

  1. システム割り当てまたはユーザー割り当てのマネージド ID を作成するか、両方の種類を作成します。 それらの違いについて詳しくは、「マネージド ID の種類」をご覧ください。

    Note

    • ユーザー割り当て ID がサポートされているのはクラウド ジョブの場合だけです。 ハイブリッド runbook worker で Automation アカウントのユーザー マネージド ID を使うことはできません。 ハイブリッド ジョブを使うには、システム割り当て ID を作成する必要があります。
    • ハイブリッド runbook worker のスクリプトでマネージド ID を使うには、2 つの方法があります。Automation アカウントのシステム割り当てマネージド ID、"または"、ハイブリッド runbook worker として実行されている Azure VM の仮想マシン (VM) マネージド ID です。
    • VM のユーザー割り当てマネージド ID と VM のシステム割り当てマネージド ID は、Automation アカウントのマネージド ID で構成された Automation アカウントでは "機能しません"。 Automation アカウントのマネージド ID を有効にすると、Automation アカウントのシステム割り当てマネージド ID のみを使用でき、VM マネージド ID は使用できません。 詳しくは、「マネージド ID で Runbook 認証を使用する」をご覧ください。
  2. 実行アカウントと一致する Azure リソースにアクセスするには、同じロールをマネージド ID に割り当てます。 このスクリプトを使用して、Automation アカウントのシステム割り当て ID を有効にし、Automation アカウントのシステム割り当て ID に Azure Automation 実行アカウントに存在するものと同じアクセス許可のセットを割り当てます。

    たとえば、Automation アカウントが Azure VM の開始または停止を行うためにのみ必要な場合は、その実行アカウントに割り当てられるアクセス許可は、VM の開始または停止のためのみのものである必要があります。 同様に、Runbook が Azure Blob Storage から読み取っている場合は、読み取り専用アクセス許可を割り当てます。 詳しくは、Azure Automation のセキュリティ ガイドラインに関する記事をご覧ください。

  3. クラシック実行アカウントを使用している場合、Azure Resource Manager に クラシック デプロイ モデルを通じて移行済みリソースがデプロイされていることを確認してください。

  4. どの Automation アカウントが実行アカウントを使っているかを調べるには、このスクリプトを使います。 Azure Automation アカウントに実行アカウントが含まれている場合、既定で組み込みの共同作成者ロールが割り当てられます。 このスクリプトを使うと、Azure Automation 実行アカウントを確認し、そのロールの割り当てが既定のものかどうか、別のロール定義に変更されているかどうかを判断できます。

  5. このスクリプトを使用して、Automation アカウントのすべての Runbook で実行アカウントが使用されているかどうか調べます。

Automation の実行アカウントからマネージド ID に移行する

Automation の実行アカウントまたはクラシック実行アカウントから Runbook 認証のマネージド ID に移行するには、次の手順のようにします。

  1. マネージド ID を使うように Runbook コードを変更します。

    運用 Runbook のコピーを作成することにより、マネージド ID をテストして Runbook が期待どおりに動作するかどうかを確認することをお勧めします。 マネージド ID を使って認証を行うようにテスト Runbook コードを更新します。 この方法では、運用 Runbook の AzureRunAsConnection をオーバーライドしたり、既存の Automation インスタンスを中断したりすることがありません。 Runbook コードがマネージド ID で期待どおりに実行することを確認したら、マネージド ID を使うように運用 Runbook を更新します。

    マネージド ID をサポートするには、Connect-AzAccount コマンドレットを使います。 このコマンドレットについて詳しくは、PowerShell リファレンスの Connect-AzAccount をご覧ください。

    • Az モジュールを使っている場合は、Azure PowerShell モジュールの更新に関する記事の手順のようにして、最新バージョンに更新します。
    • AzureRM モジュールを使っている場合は、AzureRM.Profile を最新バージョンに更新し、Add-AzureRMAccount コマンドレットを使って Connect-AzureRMAccount –Identity にそれを置き換えます。

    マネージド ID を使う前に必要な Runbook コードの変更を理解するには、サンプル スクリプトを使います。

  2. マネージド ID を使って Runbook が正常に実行されることを確認したら、他の Runbook がそのアカウントを使っていない場合は、安全に実行アカウントを削除できます。

サンプルのスクリプト

次の Runbook スクリプトの例は、実行アカウント (サービス プリンシパル) とマネージド ID を使って、Resource Manager リソースをフェッチします。 Runbook のコードの相違は、Runbook の冒頭部分のリソースに対して認証を行う箇所で見つかります。

Note

この Automation アカウントのシステム ID に対して適切な RBAC アクセス許可を有効にしてください。 そうしないと、Runbook が失敗する場合があります。

try
{
    "Logging in to Azure..."
    Connect-AzAccount -Identity
}
catch {
    Write-Error -Message $_.Exception
    throw $_.Exception
}

#Get all Resource Manager resources from all resource groups
$ResourceGroups = Get-AzResourceGroup

foreach ($ResourceGroup in $ResourceGroups)
{    
    Write-Output ("Showing resources in resource group " + $ResourceGroup.ResourceGroupName)
    $Resources = Get-AzResource -ResourceGroupName $ResourceGroup.ResourceGroupName
    foreach ($Resource in $Resources)
    {
        Write-Output ($Resource.Name + " of type " +  $Resource.ResourceType)
    }
    Write-Output ("")
}

ユーザー割り当て ID のクライアント IDを表示する

  1. [Automation アカウント] の [アカウント設定] で、[ID] を選択します。

  2. [ユーザー割り当て済み] タブで、ユーザー割り当て ID を選択します。

    Screenshot that shows the navigation path to view client ID.

  3. [概要]>[Essentials] の順に移動し、[クライアント ID] を表示します。

    Screenshot that shows how to view a client ID.

グラフィック Runbook

グラフィカル Runbook で実行アカウントが使用されているかどうかを調べる

  1. Runbook 内の各アクティビティを調べて、Add-AzRmAccount/Connect-AzRmAccount/Add-AzAccount/Connect-AzAccount などのログオン コマンドレットやエイリアスを呼び出すときに実行アカウントを使っているかどうかを確認します。

    Screenshot that illustrates checking if a graphical runbook uses a Run As account.

  2. コマンドレットで使われているパラメーターを調べます。

    Screenshot that shows examining the parameters used by a cmdlet.

    実行アカウントで使う場合、コマンドレットは ApplicationId に設定された ServicePrinicipalCertificate パラメーターを使います。 CertificateThumbprintRunAsAccountConnection からのものです。

    Screenshot that shows parameter sets.

マネージド ID を使用するようにグラフィカル Runbook を編集する

マネージド ID をテストして、グラフィカル Runbook が期待どおりに動作していることを確認する必要があります。 マネージド ID を使用する運用 Runbook のコピーを作成し、マネージド ID を使って認証を行うようにテスト グラフィカル Runbook のコードを更新します。 Connect-AzAccount コマンドレットを追加することで、この機能をグラフィカル Runbook に追加できます。

次の手順では、実行アカウントを使うグラフィカル Runbook でマネージド ID を使う方法の例を示します。

  1. Azure portal にサインインします。

  2. Automation アカウントを開き、[プロセス オートメーション]>[Runbook] を選びます。

  3. Runbook を選びます。 たとえば、一覧から Start Azure V2 VMs Runbook を選んで、[編集] を選ぶか、[ギャラリーの参照] に移動して [Start Azure V2 VMs] を選びます。

    Screenshot of editing a graphical runbook.

  4. AzureRunAsConnection を使う実行接続と、PowerShell Get-AutomationConnection コマンドレットを内部的に使う接続資産を、Connect-AzAccount コマンドレットに置き換えます。

  5. [削除] を選択して Get Run As Connection および Connect to Azure アクティビティを削除します。

    Screenshot to connect to the Azure activities.

  6. 左側のパネルで、[Runbook の制御] にある [コード] を選択し、[キャンバスに追加] を選択します。

    Screenshot to select code and add it to the canvas.

  7. コード アクティビティを編集し、任意の適切なラベル名を割り当て、[作成者アクティビティ ロジック] を選択します。

    Screenshot to edit code activity.

  8. [コード エディター] ページで、次の PowerShell コードを入力し、[OK] を選択します。

    try 
    { 
       Write-Output ("Logging in to Azure...") 
       Connect-AzAccount -Identity 
    } 
    catch { 
       Write-Error -Message $_.Exception 
       throw $_.Exception 
    } 
    
  9. 新しいアクティビティを先ほど [Azure に接続する] で接続したアクティビティに接続し、Runbook を保存します。

    Screenshot to connect new activity to activities.

たとえば、Runbook ギャラリーの Runbook Start Azure V2 VMs では、Get Run As Connection および Connect to Azure アクティビティを、上記のように Connect-AzAccount コマンドレットを使用するコード アクティビティに置き換える必要があります。 詳しくは、Automation アカウントで作成される AzureAutomationTutorialWithIdentityGraphical という名前のサンプル Runbook をご覧ください。

Note

AzureRM PowerShell モジュールは、2024 年 2 月 29 日に廃止されます。 グラフィック Runbook で AzureRM PowerShell モジュールを使用している場合は、AzureRM PowerShell モジュールを使用するようにアップグレードする必要があります。 詳細情報 を参照してください。

次のステップ