> 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](/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 を一致させることができます。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`
* 共有リポジトリ内の device 関連 runbook をすべて許可する

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

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

  `user_*`

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

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

### DisabledRunbookPatterns

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

このセクションのエントリは、 [EnabledRunbookPatterns ](#enabledrunbookpatterns)— この Tenant の誰に対しても runbook は非表示になり、使用できなくなります。

#### 例

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

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

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

### 役割

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

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

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

#### 例

ここまでの内容を踏まえ、device サポート役割を作成しましょう `DeviceAdmin` そして user サポート役割を `UserAdmin`.

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

グループの object id の横に、Entra ID group 名を示すコメント（「//」）を追加しましょう。

```json
{
  "EnabledRunbookPatterns": [
    "rjgit-group_general_remove-group",
    "rjgit-device_*",
    "rjgit-user_*",
    "user_*"
  ],
  "DisabledRunbookPatterns": [
    "rjgit-*_security_*"
  ],
  "Roles": {
    "DeviceAdmin": {
      "Groups": [
        "9cbfc0af-c217-41e9-b790-3043788f1234", // 1つ目の Device Support AAD グループ
        "5555c0af-c217-41e9-b790-3043788f1234"  // 2つ目の Device Support AAD グループ - 別チーム
      ],
      "AllowedRunbookPatterns": [
        "rjgit-device_*"
      ]
    },
    "UserAdmin": {
      "Groups": [
        "1234c0af-c217-41e9-b790-3043788f1234" // User Support AAD グループ
      ],
      "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 ではなく、主/割り当てユーザーによって target されます。これにより、純粋にユーザー ベースの group モデルを維持できます。

重要な VIP ユーザーを含む Entra ID groups が存在すると仮定します。このセクションを使うと、これらの特定の Entra ID groups（targets）に対して、さらに重要な役割や runbook の範囲を慎重に限定できます。

もちろん、このセクションを省略すると、Tenant 内のすべてのユーザー / group / device は同等に扱われます。

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

#### 完全な例

group を想定します `0000c0af-c217-41e9-b790-3043788f0000` が VIP ユーザーの group です。

新しい Entra ID group を導入します `4444c0af-c217-41e9-b790-3043788f4444` VIP ユーザーを管理することが承認されたサポート担当者を含みます。これらのサポート担当者には他の基本的なサポート権限も必要なので、既存の役割に追加します。

役割を「Restricting」しても、サポート担当者に新しい役割は付与されません。

```json
{
  "EnabledRunbookPatterns": [
    "rjgit-group_general_remove-group",
    "rjgit-device_*",
    "rjgit-user_*",
    "user_*"
  ],
  "DisabledRunbookPatterns": [
    "rjgit-*_security_*"
  ],
  "Roles": {
    "DeviceAdmin": {
      "Groups": [
        "9cbfc0af-c217-41e9-b790-3043788f1234", // 1つ目の Device Support AAD グループ
        "5555c0af-c217-41e9-b790-3043788f1234", // 2つ目の Device Support AAD グループ - 別チーム
        "4444c0af-c217-41e9-b790-3043788f4444"  // VIP サポートチーム
      ],
      "AllowedRunbookPatterns": [
        "rjgit-device_*"
      ]
    },
    "UserAdmin": {
      "Groups": [
        "1234c0af-c217-41e9-b790-3043788f1234", // User Support 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 サポーターが次の対象に対して runbook を実行する権限を **すべてのユーザー**.
* 特に **許可する例外ルールを追加し** runbook の実行を次に対してのみ行えるようにします **US ユーザー**.

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

**実装**

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 で新しい役割を追加する
   1. Roles セクションで、USSupporters 役割にその 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 ユーザーの管理のみに制限する</p></figcaption></figure>

このシナリオの完全な例は以下のとおりです:

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

  // group メンバーシップ:
  // 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
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, and the optional `goal` query parameter:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
