> For the complete documentation index, see [llms.txt](https://docs.realmjoin.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.realmjoin.com/ja/zi-dong-hua/runbooks/runbook-permissions.md).

# 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」と同様に [Runbook のカスタマイズ](/ja/zi-dong-hua/runbooks/runbook-customization.md)、これらの権限の定義は、RealmJoin 管理者として RealmJoin の web ポータルで JSON 形式の設定を指定することで行います。 <https://portal.realmjoin.com/settings/runbooks-permissions> .

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

まず構文を簡単に説明し、その後で完全な例を少しずつ作成していきます。完全なサンプルに直接移動して、そこから始めても構いません。 [そこ](#targetentitygroups).

## 設定構文

### Runbook 名

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

ワイルドカード（'\*'）を使って複数の runbook に一致させることができます。同じ文字列内で複数のワイルドカードを使うこともできます。例: `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 グループは、次のように Object ID を使って参照されます。 `91688d11-9a34-42cd-8d1e-ce617d6c1234`。現在はセキュリティ グループのみ使用できます。

## JSON の構造と例

完全な設定例を少しずつ作成していきます。

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

「//」接頭辞を使ってコメントを追加できます。

### EnabledRunbookPatterns

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

このセクションを定義すると、ここで挙げられた runbook だけが、いずれのロール / サポート / 管理者でも使用可能になります。

#### 例

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

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

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

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

  `user_*`

これにより、グループベースの runbook やすべての組織ベースの runbook の多くが暗黙的に除外されます。ご注意ください。

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

### DisabledRunbookPatterns

全体的に無効/禁止される runbook の一覧です。このセクションが省略されるか空の場合、すべての有効な runbook（ [EnabledRunbookPatterns](#enabledrunbookpatterns)で指定されたもの）は使用できます。

このセクションのエントリは、以下のエントリより優先されます: [EnabledRunbookPatterns ](#enabledrunbookpatterns)— runbook はこの Tenant の誰にとっても非表示になり、使用できなくなります。

#### 例

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

* 共有の（`rjgit-`）runbook をすべて無効にします。 `セキュリティ` カテゴリ。

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

### ロール

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

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

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

#### 例

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

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

読者の助けになるよう、Entra ID グループ名を示すコメント（"//"）をグループの 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", // 1番目のデバイスサポート AAD グループ
        "5555c0af-c217-41e9-b790-3043788f1234"  // 2番目のデバイスサポート AAD グループ - 他チーム
      ],
      "AllowedRunbookPatterns": [
        "rjgit-device_*"
      ]
    },
    "UserAdmin": {
      "Groups": [
        "1234c0af-c217-41e9-b790-3043788f1234" // ユーザーサポート AAD グループ
      ],
      "AllowedRunbookPatterns": [
        "rjgit-user_general_assign-or-unassign-license",
        "rjgit-user_mail_*",
        "user_*"
      ]
    }
  }
}
```

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

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

その `DeviceAdmin` このロールは

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

### TargetEntityGroups

重要な VIP ユーザーがいるかもしれません。どのサポート担当でも VIP のデバイスを消去したり、VIP のメールアドレスを変更したりできるべきではありません。「ターゲティング」を使えば、重要なユーザーに対するロールを専任チームに限定できます。

「Devices」は、Entra ID のデバイス object ではなく、主ユーザー/割り当てユーザーを対象にします。これにより、純粋にユーザーベースのグループモデルを維持できます。

重要な VIP ユーザーを含む Entra ID グループが存在すると想定します。このセクションを使うと、これらの特定の Entra ID グループ（ターゲット）に対して、さらに重要なロールや runbook を慎重に範囲指定できます。

もちろん、このセクションを省略すると、Tenant 内のすべてのユーザー/グループ/デバイスは同等に扱われます。

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

#### 完全な例

グループ `0000c0af-c217-41e9-b790-3043788f0000` は VIP ユーザーのグループです。

新しい Entra ID グループを追加します `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", // 1番目のデバイスサポート AAD グループ
        "5555c0af-c217-41e9-b790-3043788f1234", // 2番目のデバイスサポート AAD グループ - 他チーム
        "4444c0af-c217-41e9-b790-3043788f4444"  // VIP サポートチーム
      ],
      "AllowedRunbookPatterns": [
        "rjgit-device_*"
      ]
    },
    "UserAdmin": {
      "Groups": [
        "1234c0af-c217-41e9-b790-3043788f1234", // ユーザーサポート AAD グループ
        "4444c0af-c217-41e9-b790-3043788f4444"  // VIP サポートチーム
      ],
      "AllowedRunbookPatterns": [
        "rjgit-user_general_assign-or-unassign-license",
        "rjgit-user_mail_*",
        "user_*"
      ]
    }
  },
  "TargetEntityGroups": {
    "0000c0af-c217-41e9-b790-3043788f0000": {  // VIP ユーザー - 慎重に扱ってください!
      "RestrictRoles": {
        "UserAdmin": [
          "4444c0af-c217-41e9-b790-3043788f4444" // VIP サポート
        ],
        "DeviceAdmin": [
          "4444c0af-c217-41e9-b790-3043788f4444" // VIP サポート
        ]
      }
    }
  }
}
```

#### **例: US サポート担当を US ユーザーのみ管理できるように制限する**

このシナリオでは、US 拠点のサポート担当が US にいるユーザーのみを管理できるようにしたいとします。この制限を適用するには:

* 明示的に **拒否する** US Supporters が runbook を実行する権限を **すべてのユーザーに対して**.
* 特定の例外ルールを追加して **許可する** runbook の実行を **US ユーザー**.

これにより、US サポーターの権限は想定対象（US ユーザー）に厳密に限定され、この範囲外のユーザーに対する誤操作を防げます。

**実装**

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

<figure><img src="/files/988ec89de7d506d7d8ad07960480e02afb4d4f05" alt=""><figcaption><p>US サポート担当を US ユーザーのみ管理できるように制限する</p></figcaption></figure>

このシナリオの完全な例を以下に示します:

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

  // グループ メンバーシップ:
  // 3e1e7540-7f0c-483c-b9bf-500342e2467c: All-Users
  // c603278c-cc36-4661-bb7a-eecb7ab079f9: US Supporters
  // 0f76d01e-cc6b-4553-bf1d-e4ccedd9c824: US Users

  "EnabledRunbookPatterns": [ // メールおよびセキュリティ 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

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

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

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

### SchedulingDisabledRunbookPatterns

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

SchedulingEnabledRunbookPatterns と SchedulingDisabledRunbookPatterns の両方に含まれる runbook は **一致** スケジュール可能になります。

既定では、ブラックリスト化される runbook はありません。以下の例は構文を示すだけです:

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


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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.
