# Runbook の権限

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

## 範囲

これは、Azure Tenant 内の特定の runbook へのアクセスを許可/拒否する方法を説明します。runbook として特定の操作を実行するために必要な MS Graph API 権限について知りたい場合は、以下をご覧ください。 [要件](/ja/zi-dong-hua/connecting-azure-automation/azure-ad-roles-and-permissions.md).

## 概要

「Runbook Permissions」は、特定のユーザーに対する runbook の表示可否を定義します。特定の runbook は、グローバルにブロック/非表示にすることもできます。

次の [Runbook Customizations](/ja/zi-dong-hua/runbooks/runbook-customization.md)と同様に、これらの権限の定義は、RealmJoin の Web ポータルで RealmJoin 管理者として JSON 形式の設定を入力することで行います。 <https://portal.realmjoin.com/settings/runbooks-permissions> .

### このガイドについて

まず構文を簡単に説明し、その後で完全な例を段階的に作成します。必要であれば、すぐに完全なサンプルに進み、そこから始めてください。 [そこ](#targetentitygroups).

## 構成構文

### Runbook 名

Runbook は Azure Automation Account に表示される名前で参照されます。例： `rjgit-group_general_remove-group`.

ワイルドカード（"\*"）を使って複数の runbook に一致させることができます。1 つの文字列内で複数のワイルドカードを使うこともできます。例： `rjgit-*_security_*`。これは次の例すべてに一致します：

* `rjgit-org_security_list-inactive-users`
* `rjgit-device_security_enable-or-disable-device`

接頭辞 `rjgit-` は、公開 GitHub リポジトリからインポートされた runbook を示します。顧客固有の runbook には接頭辞がありません。例： `user_userinfo_custom-runbook`

### Entra ID Groups

Entra ID groups は、次のように Object ID を使って参照されます。 `91688d11-9a34-42cd-8d1e-ce617d6c1234`現在使用できるのはセキュリティ グループのみです。

## JSON 構造と例

完全な設定例を段階的に作成していきます。

JSON 設定は複数のセクションで構成されますが、すべてのセクションは任意であり、省略できます。

"//" プレフィックスを使ってコメントを追加できます。

### EnabledRunbookPatterns

このセクションには、使用を許可する runbook の一覧が含まれます。このセクションを省略すると、既定ですべての runbook が有効/許可されます。

このセクションを定義した場合、ここに記載された runbook だけが、任意のロール / サポート / 管理者によって使用可能になります。

#### 例

* 完全な名前を指定して、特定の個別 runbook のみを許可する

  `rjgit-group_general_remove-group`
* 共有リポジトリのすべてのデバイス関連 runbook を許可する

  `rjgit-device_*`
* 共有のすべての user runbook を許可する

  `rjgit-user_*`
* 顧客固有（ローカル）の user 関連 runbook をすべて許可する

  `user_*`

これにより、group 関連の多くの runbook と、すべての org ベースの runbook が暗黙的に除外されます。注意してください。

```
{
  "EnabledRunbookPatterns": [
    "rjgit-group_general_remove-group",
    "rjgit-device_*",
    "rjgit-user_*",
    "user_*"
  ]
}
```

### DisabledRunbookPatterns

グローバルに無効化 / 禁止される runbook の一覧です。このセクションを省略するか空にすると、有効化されたすべての runbook（ [EnabledRunbookPatterns](#enabledrunbookpatterns)で指定されたもの）が使用可能になります。

このセクションの項目は [EnabledRunbookPatterns ](#enabledrunbookpatterns)の項目より優先されます。- その runbook は、この Tenant の誰にも表示されず、使用できません。

#### 例

先ほどの `EnabledRunbookPatterns` セクションを再利用します。

* 共有（`rjgit-`）runbook をすべて無効化する `security` カテゴリの。

```
{
  "EnabledRunbookPatterns": [
    "rjgit-group_general_remove-group",
    "rjgit-device_*",
    "rjgit-user_*",
    "user_*"
  ],
  "DisabledRunbookPatterns": [
    "rjgit-*_security_*"
  ]
}
```

### ロール

このセクションでは、runbook の一覧を Entra ID group に割り当てることができます。これにより、Tenant 内に複数のサポート/オペレーター ロールを定義できます。

このセクションを省略すると、前のセクションで指定されたすべての runbook へのアクセス権が、すべての RealmJoin サポート担当者と管理者に付与されます。

{% hint style="warning" %}
有効にすると、ロールに属さないユーザーには runbook は表示されません。
{% endhint %}

#### 例

これまでの内容を踏まえて、デバイス サポート ロールを作成しましょう `DeviceAdmin` およびユーザー サポート ロール `UserAdmin`.

これらのロールを複数の Entra ID group に適用し、各ロールごとに許可する runbook の一覧を指定します。注意してください。これにより、ユーザー サポート ロールはごく少数の runbook のみに制限されます。

読者に分かりやすいよう、Entra ID group 名を記したコメント（"//"）を group の object id の横に追加しましょう。

```json
{
  "EnabledRunbookPatterns": [
    "rjgit-group_general_remove-group",
    "rjgit-device_*",
    "rjgit-user_*",
    "user_*"
  ],
  "DisabledRunbookPatterns": [
    "rjgit-*_security_*"
  ],
  "Roles": {
    "DeviceAdmin": {
      "Groups": [
        "9cbfc0af-c217-41e9-b790-3043788f1234", // 1st Device Support AAD Group
        "5555c0af-c217-41e9-b790-3043788f1234"  // 2nd Device Support AAD Group - other team
      ],
      "AllowedRunbookPatterns": [
        "rjgit-device_*"
      ]
    },
    "UserAdmin": {
      "Groups": [
        "1234c0af-c217-41e9-b790-3043788f1234" // User Support AAD Group
      ],
      "AllowedRunbookPatterns": [
        "rjgit-user_general_assign-or-unassign-license",
        "rjgit-user_mail_*",
        "user_*"
      ]
    }
  }
}
```

これで `UserAdmin` ロールは次のことができます：

* Tenant 内のすべてのユーザーにライセンスを割り当てる
* Tenant 内のすべてのユーザーのメールアドレスを変更する

この `DeviceAdmin` ロールは

* Tenant 内の任意のデバイスをワイプできる

### TargetEntityGroups

重要な VIP ユーザーがいるかもしれません。どのサポート担当でも VIP のデバイスを消去したり、VIP のメールアドレスを変更したりできるべきではありません。"targeting" を使って、重要なユーザーに対するロールを専任チームに制限できます。

"Devices" は、Entra ID のデバイス object ではなく、主ユーザー / 割り当てユーザーによって対象化されます。これにより、純粋なユーザーベースの group モデルに従うことができます。

重要な VIP ユーザーを含む Entra ID group が存在すると仮定します。このセクションを使うことで、これらの特定の Entra ID group（targets）に対して、より重要な一部のロールと runbook の適用範囲を慎重に限定できます。

当然ながら、このセクションを省略すれば、Tenant 内のすべてのユーザー/group/device は同等に扱われます。

TargetEntityGroups を定義しても、このセクションに記載されていない他の group には影響しません。

#### 完全な例

group `0000c0af-c217-41e9-b790-3043788f0000` は VIP ユーザーの group だとします。

新しい Entra ID group `4444c0af-c217-41e9-b790-3043788f4444` を導入し、VIP ユーザーの管理を許可されたサポート担当者を含めます。これらのサポート担当者には他の基本サポート権限もすべて必要なので、既存のロールに追加します。

ロールを「制限」しても、サポート担当者に新しいロールが付与されることはありません。

```json
{
  "EnabledRunbookPatterns": [
    "rjgit-group_general_remove-group",
    "rjgit-device_*",
    "rjgit-user_*",
    "user_*"
  ],
  "DisabledRunbookPatterns": [
    "rjgit-*_security_*"
  ],
  "Roles": {
    "DeviceAdmin": {
      "Groups": [
        "9cbfc0af-c217-41e9-b790-3043788f1234", // 1st Device Support AAD Group
        "5555c0af-c217-41e9-b790-3043788f1234", // 2nd Device Support AAD Group - other team
        "4444c0af-c217-41e9-b790-3043788f4444"  // VIP Support Crew
      ],
      "AllowedRunbookPatterns": [
        "rjgit-device_*"
      ]
    },
    "UserAdmin": {
      "Groups": [
        "1234c0af-c217-41e9-b790-3043788f1234", // User Support AAD Group
        "4444c0af-c217-41e9-b790-3043788f4444"  // VIP Support Crew
      ],
      "AllowedRunbookPatterns": [
        "rjgit-user_general_assign-or-unassign-license",
        "rjgit-user_mail_*",
        "user_*"
      ]
    }
  },
  "TargetEntityGroups": {
    "0000c0af-c217-41e9-b790-3043788f0000": {  // VIP Users - Treat with care!
      "RestrictRoles": {
        "UserAdmin": [
          "4444c0af-c217-41e9-b790-3043788f4444" // VIP Support
        ],
        "DeviceAdmin": [
          "4444c0af-c217-41e9-b790-3043788f4444" // VIP Support
        ]
      }
    }
  }
}
```

#### **例：US サポート担当者を US ユーザーのみに管理を限定する**

このシナリオでは、US ベースのサポート担当者が US に所在するユーザーのみを管理する必要があります。この制限を適用するには：

* 明示的に **拒否する** US Supporters に対して、次の対象に対する Runbook の実行を許可しない権限ルールを作成する **すべてのユーザー**.
* 特に **許可する** Runbook の実行を次の対象にのみ限定する例外ルールを追加する **US Users**.

これにより、US Supporters の権限は意図した対象（US Users）に厳密に限定され、この範囲外のユーザーとの誤操作を防げます。

**実装**

1. Runbook Runners Entra group を Realm Join Portal で割り当てる必要があります
   1. Settings > Permissions > Runbook Runner Permissions
   2. US Supporters Entra group は、RealmJoin Portal での一般的な Runbook 操作を許可するために、Runbook Runners Group のメンバーである必要があります。
2. Settings > Runbook Permissions で新しい Role を追加する
   1. Roles セクションに、USSupporters Role とその Entra group（group object ID）を追加する
   2. USSupporters 用の AllowedRunbookPatterns を追加する
3. TargetEntityGroups を変更する
   1. All-Users group は、空の値で USSupporters ロールを Restrict する必要があります（ここには Entra group の object ID は追加しません）。これは暗黙的な拒否です！
   2. US Users group は、US Supporters Entra group の object ID に対して USSupporters ロールを Restrict する必要があります

<figure><img src="/files/988ec89de7d506d7d8ad07960480e02afb4d4f05" alt=""><figcaption><p>US サポート担当者を US Users のみに管理を限定する</p></figcaption></figure>

以下がこのシナリオの完全な例です：

```json
{
  // ポータル権限：
  // Runbook Runner ロール：US Supporters

  // group membership：
  // 3e1e7540-7f0c-483c-b9bf-500342e2467c: All-Users
  // c603278c-cc36-4661-bb7a-eecb7ab079f9: US Supporters
  // 0f76d01e-cc6b-4553-bf1d-e4ccedd9c824: US Users

  "EnabledRunbookPatterns": [ // mail および security Runbook の一般的な有効化
    "rjgit-*_mail_*",
    "rjgit-*security*"
  ],
  "DisabledRunbookPatterns": [
    "*password*"
  ],

  "Roles": {
    "USSupporters": {
      "Groups": [
        "c603278c-cc36-4661-bb7a-eecb7ab079f9" // US Supporters
      ],
      "AllowedRunbookPatterns": [ // このロールで許可される Runbook - US Supporters
        "rjgit-user_*",
        "rjgit-device_*",
        "rjgit-group_*"
      ]
    }
  },
  
  "TargetEntityGroups": {
    "3e1e7540-7f0c-483c-b9bf-500342e2467c": { // All-Users
      "RestrictRoles": {
        "USSupporters": [
          // 基本的に、どの US Supporters に対しても Runbook を許可しない
        ]
      }
    },
    "0f76d01e-cc6b-4553-bf1d-e4ccedd9c824": { // US Users
      "RestrictRoles": {
        "USSupporters": [
          "c603278c-cc36-4661-bb7a-eecb7ab079f9" // US Supporters
        ]
      }
    }
  }
}
```

### SchedulingEnabledRunbookPatterns

このセクションには、「schedulable」としてフラグ付けされる runbook の一覧が含まれます。RealmJoin Port では、これらの runbook のスケジュールを割り当て/管理できます。参照： [Runbook のスケジューリング](/ja/zi-dong-hua/runbooks/scheduling.md).

次の例は、SchedulingEnabledRunbookPatterns が定義されていない場合の既定動作を示しています：

```json
{
  "SchedulingEnabledRunbookPatterns": [
    "*_scheduled"
  ]
}
```

### SchedulingDisabledRunbookPatterns

このセクションには、「schedulable」としてフラグ付けされないようブラックリスト化される runbook の一覧が含まれます。RealmJoin Port では、これらの runbook のスケジュールを割り当て/管理できません。参照： [Runbook のスケジューリング](/ja/zi-dong-hua/runbooks/scheduling.md).

SchedulingEnabledRunbookPatterns と SchedulingDisabledRunbookPatterns の両方に存在する runbook は **一致しません** schedulable になります。

既定では、ブラックリスト化された runbook はありません。次の例は構文のみを示しています：

```json
{
  "SchedulingDisabledRunbookPatterns": [
    "rjgit-user_*"
  ]
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.realmjoin.com/ja/zi-dong-hua/runbooks/runbook-permissions.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
