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

重要

Azure Automation実行アカウントは 2023 年 9 月 30 日に廃止され、マネージド ID に完全に移行されます。 クラシック実行アカウントを含む RunAs アカウントを使用するすべての Runbook 実行は、この日付以降はサポートされません。 2023 年 4 月 1 日から、Azure Automationで新しい実行アカウントを作成することはできません。

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

Azure Automation の実行アカウントは、Azure Resource Manager またはクラシック デプロイ モデルによってデプロイされたリソースを管理するための認証を提供します。 実行アカウントが作成されるたびに、Azure AD アプリケーションが登録され、自己署名証明書が生成されます。 証明書は 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 に割り当てます。 「Azure Automation 実行アカウントのロールの割り当てを確認する」の手順のようにしてください。 このスクリプトを使用して、Automation アカウントでシステム割り当て ID を有効にし、Azure Automation実行アカウントに存在する同じアクセス許可セットを Automation アカウントのシステム割り当て ID に割り当てます。

    共同作成者や所有者のような高い特権のアクセス許可を実行アカウントに割り当てていないことを確認します。 ロールベースのアクセス制御 (RBAC) のガイドラインに従い、このスクリプトを使って、実行アカウントに割り当てられている既定の共同作成者アクセス許可からアクセス許可を制限します。

    たとえば、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] を選択します。

    クライアント ID を表示するためのナビゲーション パスを示すスクリーンショット。

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

    クライアント ID を表示する方法を示すスクリーンショット。

グラフィック Runbook

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

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

    グラフィカル Runbook で実行アカウントが使われているかどうかの確認を示すスクリーンショット。

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

    コマンドレットで使われているパラメーターの調査を示すスクリーンショット。

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

    パラメーター セットを示すスクリーンショット。

マネージド 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]\(Azure V2 VM の開始 \) Runbook を選択し、[ 編集] を選択するか、[ ギャラリーの参照 ] に移動して [ Start Azure V2 VM]\(Azure V2 VM の開始\) を選択します。

    グラフィカル Runbook の編集のスクリーンショット。

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

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

    Azure アクティビティに接続するスクリーンショット。

  6. 左側のパネルの [RUNBOOK コントロール] で、[ コード ] を選択し、[ キャンバスに追加] を選択します。

    コードを選択し、キャンバスに追加するスクリーンショット。

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

    コード アクティビティを編集するスクリーンショット。

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

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

    新しいアクティビティをアクティビティに接続するスクリーンショット。

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

Note

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

次のステップ