# Azure Automation への接続

## 概要

{% embed url="<https://www.youtube.com/watch?v=Ijp9XnE8UuA>" %}

RealmJoin Portal が提供できるようにするには [runbooks ](https://docs.realmjoin.com/ja/zi-dong-hua/runbooks)を使用して日常タスクを自動化するために、 [Azure Automation](https://learn.microsoft.com/en-us/azure/automation/overview) Account を接続する必要があります。この Automation Account は runbooks のホストとして機能し、 [permissions](https://docs.realmjoin.com/ja/zi-dong-hua/connecting-azure-automation/azure-ad-roles-and-permissions) を提供して、runbooks が環境内で機能するために必要なものを満たします。

## 考慮事項&#x20;

Automation Account の [Managed Identity](https://learn.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/overview) は、 [permissions ](https://docs.realmjoin.com/ja/zi-dong-hua/connecting-azure-automation/azure-ad-roles-and-permissions)Entra ID のグループやユーザー オブジェクトの変更、Exchange Online のメールボックス管理など、環境内で広範な権限を必要とします。これらの権限の悪用を防ぐため、このアカウントへの管理アクセスは制限してください。

既存の Automation Account を使用する場合、RealmJoin Portal は [共有オンライン runbooks リポジトリ](https://github.com/realmjoin/realmjoin-runbooks)から取得した runbooks を自動的に作成、更新、削除することに注意してください。この機能は既存の Automation Account ではサポートされない場合があります。確信が持てない場合は、RealmJoin Runbooks 用に専用の Azure Automation Account を作成することをお勧めします。

## 前提条件

* Global Administrator の権限
* 次を使用した PowerShell へのアクセス [Az](https://learn.microsoft.com/en-us/powershell/azure/?view=azps-15.3.0) モジュールまたは [AZ CLI](https://learn.microsoft.com/en-us/cli/azure/?view=azure-cli-latest)
* Azure サブスクリプションに対する Contributor 権限
* [Runbook の要件](https://docs.realmjoin.com/ja/zi-dong-hua/connecting-azure-automation/azure-ad-roles-and-permissions)

## 手順

{% stepper %}
{% step %}

### Azure Automation Account を作成する

1. 次へ移動してください [Azure Portal > Automation Accounts](https://portal.azure.com/#create/Microsoft.AutomationAccount)&#x20;
2. 新しい Automation Account を作成する
3. Basics タブで、希望する Subscription、Resource Group、Automation Account 名、リージョンを選択します<br>

   <figure><img src="https://3438325150-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MkrcM7cKOpXKri1kVrh%2Fuploads%2FqjBLc2zH3XCCqfAViEsU%2Fimage.png?alt=media&#x26;token=257816e0-eb8a-478c-973f-fb288324d8c8" alt=""><figcaption></figcaption></figure>

{% hint style="success" %}
Automation Account 用に別の Resource Group を作成することを推奨します
{% endhint %}

4. Advanced タブで、System Assigned Managed Identity が有効になっていることを確認します

   <figure><img src="https://3438325150-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MkrcM7cKOpXKri1kVrh%2Fuploads%2F6EYSjUouHCtzNE99DYM8%2Fimage.png?alt=media&#x26;token=000d1f85-9ed0-458f-ae68-48b94f2dbf15" alt=""><figcaption></figcaption></figure>

5. Review + Create を選択し、Automation Account を作成します

6. Azure Automation Account を含む Resource Group に移動します

7. IAM タブで、Azure Automation Account に Contributor を割り当てます
   {% endstep %}

{% step %}

### Azure Automation Account に権限を割り当てる

RealmJoin の共有 runbooks は、Azure Automation の system assigned managed identity を使用して Entra ID、MS Graph API などと連携します。

Managed Identity の権限は、現在 Azure Portal から付与できません。これらの権限を割り当てるには Microsoft Graph または PowerShell を使用してください。

1. 以下の PowerShell スクリプトと JSON ファイルを同じフォルダーにダウンロードしてください。\
   このスクリプトは、RealmJoin に必要なフル権限セットを割り当てます。ロールと権限は [要件](https://docs.realmjoin.com/ja/zi-dong-hua/connecting-azure-automation/azure-ad-roles-and-permissions) セクションで確認でき、必要に応じて JSON ファイルで調整できます。

{% tabs %}
{% tab title="GrantAppPermToEntApp.ps1" %}
{% @github-files/github-code-block url="<https://github.com/Workplace-Foundation/approle-and-directoryrole-granter/blob/main/GrantAppPermToEntApp.ps1>" %}
{% endtab %}

{% tab title="AssignAzureADRoleToEntApp.ps1" %}
{% @github-files/github-code-block url="<https://github.com/Workplace-Foundation/approle-and-directoryrole-granter/blob/main/AssignAzureADRoleToEntApp.ps1>" %}
{% endtab %}

{% tab title="RJvNextPermissions.json" %}
{% @github-files/github-code-block url="<https://github.com/Workplace-Foundation/approle-and-directoryrole-granter/blob/main/RealmJoinVnext/RJvNextPermissions.json>" %}
{% endtab %}

{% tab title="RJvNextRoles.json" %}
{% @github-files/github-code-block url="<https://github.com/Workplace-Foundation/approle-and-directoryrole-granter/blob/main/RealmJoinVnext/RJvNextRoles.json>" %}
{% endtab %}
{% endtabs %}

2. Account Settings > Identity で Azure Automation Account の Managed Identity の Object ID を控えておいてください

   <figure><img src="https://3438325150-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MkrcM7cKOpXKri1kVrh%2Fuploads%2F4ecZSM3NW9PWJJlaNmR4%2Fimage.png?alt=media&#x26;token=e5d5b56b-50f3-4f35-a41b-7cb4230dd3f3" alt=""><figcaption></figcaption></figure>

3. PowerShell ウィンドウを開きます。

4. ダウンロードしたファイルが含まれるフォルダーに移動します

```
cd c:\temp\myfolder
```

5. 必要に応じてスクリプトのブロックを解除します\
   ![](https://3438325150-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MkrcM7cKOpXKri1kVrh%2Fuploads%2F2N1nXyV1f6allriXQ9Pb%2Fimage.png?alt=media\&token=e6009cd7-ec76-4af5-aa5c-037a92f958c7)
6. GrantAppPermToEntApp.ps1 を使用して Azure Automation Account に MS Graph の権限を割り当てます。xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx を Automation Account の Object ID に置き換えてください

```
. .\GrantAppPermToEntApp.ps1 -enterpriseAppObjId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" -permissionsTemplate .\RJvNextPermissions.json
```

7. AssignAzureADRoleToEntApp.ps1 を使用して Azure Automation Account に Entra ID の管理ロールを割り当てます。xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx を Automation Account の Object ID に置き換えてください

```
. .\AssignAzureADRoleToEntApp.ps1 -objectId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" -rolesTemplate .\RJvNextRoles.json
```

8. これで Azure Automation Account は、Runbooks を実行するための正しい権限を持っているはずです<br>
   {% endstep %}

{% step %}

### RealmJoin Runbook 構成 - パート 1

1. RealmJoin Portal で '[Settings -> Runbooks](https://portal.realmjoin.com/settings/runbooks-configuration)'.<br>

   <figure><img src="https://3438325150-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MkrcM7cKOpXKri1kVrh%2Fuploads%2FsSQHQwy9pChGMyTtidTt%2Fimage.png?alt=media&#x26;token=7bcec1d0-fb94-4591-8012-011a62295674" alt=""><figcaption></figcaption></figure>
2. Azure Automation Account に属する Tenant ID、Subscription ID、Resource Group 名を入力します\
   の Tenant ID は [Entra ID Overview ページ](https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/Overview)

   <figure><img src="https://3438325150-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MkrcM7cKOpXKri1kVrh%2Fuploads%2F3MElTpxbL7jloR1y4i9U%2Fimage.png?alt=media&#x26;token=1b83cda8-7909-4739-a36d-7848c5d4f113" alt=""><figcaption></figcaption></figure>
3. 下にある赤字のスクリプトをコピーします *ResourceGroup.*\
   このスクリプトは、Automation Account へのアクセス権を持つ Entra ID の Service Principal を作成し、RealmJoin が runbooks を管理、実行、監視できるようにします。\
   スクリプトは Tenant ID、Subscription ID、Resource Group の入力に基づいて更新されます。<br>

   <figure><img src="https://3438325150-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MkrcM7cKOpXKri1kVrh%2Fuploads%2FRoVmXCq53pQRPOdQQetg%2Fimage.png?alt=media&#x26;token=b53c79c3-cbac-4666-ad81-6d77ade1ad86" alt=""><figcaption></figcaption></figure>
4. 今はウィザードを開いたままにしてください。パート 2 でまもなく戻ります。
   {% endstep %}

{% step %}

### RealmJoin に Azure Automation へのアクセスを付与する

{% hint style="info" %}
を使用できます [Azure CloudShell](https://docs.microsoft.com/en-us/azure/cloud-shell/overview)。そのため、ローカルに AZ CLI をインストールして認証する必要はありません。
{% endhint %}

1. 前にコピーしたスクリプトを PowerShell で実行します。

   <figure><img src="https://3438325150-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MkrcM7cKOpXKri1kVrh%2Fuploads%2FylKg4jH8YJ6Cfeh6xF4z%2Fimage.png?alt=media&#x26;token=bdc3a594-0348-44f4-86be-de172247de67" alt=""><figcaption></figcaption></figure>

2. 以下の値を控えておきます `appId` および `password`。\
   App Registration "RealmJoin Runbook Management" が作成されます。<br>

   ![Azure Portal の App Registrations](https://3438325150-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MkrcM7cKOpXKri1kVrh%2Fuploads%2FAfaE2Y9DISjOLNwwLnfs%2Fimage.png?alt=media\&token=8f0a83c6-34b0-4b82-87eb-279597cfc961)
   {% endstep %}

{% step %}

### RealmJoin Runbook 構成 - パート 2

1. RealmJoin Portal で、開いているウィンドウ/ウィザード ' に戻ります[Settings -> Runbooks](https://portal.realmjoin.com/settings/runbooks-configuration)'
2. 不足している値を入力します `appId` および `password` 前のステップで作成された
3. 作成した Automation Account の名前を入力します [以前に](#create-an-azure-automation-account)
4. 追跡したい共有 runbook リポジトリの Branch を選択します。\
   不明な場合は、 `production` \
   すべての runbook ブランチはここで確認できます: <https://github.com/realmjoin/realmjoin-runbooks>
5. runbooks が正しい [Azure region](https://docs.microsoft.com/en-us/azure/availability-zones/az-overview)

![で実行されるように、Azure Automation Account と同じ場所を選択します](https://3438325150-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MkrcM7cKOpXKri1kVrh%2Fuploads%2FA0X3M2c9d13pxVt87Pf8%2Fimage.png?alt=media\&token=8e2f2b18-c3b1-4704-8cc8-eb4d43297dd1)

6. RealmJoin Portal での Automation Account 接続を保存するには、"Save" を押してください。"Sync completed" というメッセージが表示されるまで、このウィンドウを開いたままにしてください。

![](https://3438325150-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MkrcM7cKOpXKri1kVrh%2Fuploads%2Fjro6ZW5ITGp9UbnCiD08%2Fimage.png?alt=media\&token=3bf1d1e8-a1ce-4528-99a5-686c0377e8b5)
{% endstep %}
{% endstepper %}
