ロール定義を作成する
ロール定義は、JSON ファイルで定義されているアクセス許可のセットで構成されます。 各アクセス許可のセットには、アクセス許可を説明する Actions や NotActions などの名前があります。 アクセス許可セットの例を次に示します。
Actions アクセス許可では、許可されるアクションを識別します。
NotActions アクセス許可では、許可されないアクションを指定します。
DataActions アクセス許可では、データを変更または使用する方法を示します。
AssignableScopes アクセス許可には、ロール定義を割り当てることができるスコープが一覧表示されます。
次の図は、Azure RBAC の共同作成者ロールの詳細を示しています。
Actions アクセス許可には、Contributor ロールにすべてのアクション権限が含まれていると表示されます。 アスタリスク "*"
のワイルドカードは "すべて" を意味します。NotActions アクセス許可は、Actions セットによって提供される特権を絞り込み、次の 3 つのアクションを拒否します。
Authorization/*/Delete
: "すべて" の削除が許可されていません。Authorization/*/Write
: "すべて" の書き込みまたは変更が許可されていません。Authorization/elevateAccess/Action
: アクセス特権のレベルまたはスコープを増やすことが許可されていません。
共同作成者ロールには、データに与える影響を指定するための 2 つのアクセス許可もあります。
"NotDataActions": []
: 特定のアクションが一覧表示されません。 したがって、すべてのアクションがデータに影響を与える可能性があります。"AssignableScopes": ["/"]
: ロールは、データに影響するすべてのスコープに割り当てることができます。
ロール定義について知っておく必要があること
ロール定義の次の特性を確認します。
Azure RBAC には、組み込みロールとアクセス許可セットが用意されています。 カスタム ロールとアクセス許可を作成することもできます。
Owner (所有者) 組み込みロールには、Azure で最高レベルのアクセス特権があります。
システムは、Actions アクセス許可から NotActions アクセス許可を引いて、ロールの "有効なアクセス許可" を決定します。
ロールの AssignableScopes アクセス許可には、管理グループ、サブスクリプション、リソース グループ、またはリソースを指定できます。
ロールのアクセス許可
Actions と NotActions のアクセス許可を一緒に使用して、各ロールに対して正確な特権を付与および拒否します。 Actions アクセス許可は、アクセスの幅を指定することができ、NotActions アクセス許可は、アクセスを絞り込むことができます。
次の表は、Owner、Contributor、Reader (閲覧者) の 3 つの組み込みロールの定義で Actions または NotActions のアクセス許可がどのように使用されるかを示しています。 アクセス許可は、アクセスを制限するために Owner ロールから Contributor ロールと Reader ロールに絞り込まれます。
ロール名 | 説明 | Actions のアクセス許可 | NotActions のアクセス許可 |
---|---|---|---|
所有者 | Azure RBAC でロールを割り当てる権限を含め、すべてのリソースを管理するためのフル アクセスを付与します。 | * |
該当なし |
Contributor | すべてのリソースを管理するためのフル アクセスが付与されますが、Azure RBAC でロールを割り当てたり、Azure Blueprints で割り当てを管理したり、イメージ ギャラリーを共有したりすることはできません。 | * |
- Microsoft.Authorization/*/Delete - Microsoft.Authorization/*/Write - Microsoft.Authorization/elevateAccess/Action |
Reader | すべてのリソースを表示しますが、変更を加えることはできません。 | /*/read |
該当なし |
ロール スコープ
ロールのアクセス許可を定義したら、AssignableScopes アクセス許可を使用して、ロールを割り当てる方法を指定します。 いくつか例を見てみましょう。
2 つのサブスクリプションの割り当て用にロールのスコープを使用可能に指定します。
"/subscriptions/c276fc76-9cd4-44c9-99a7-4fd71546436e", "/subscriptions/e91d47c4-76f3-4271-a796-21b4ecfe3624"
ネットワーク リソース グループでのみ割り当て用にロールのスコープを使用可能に指定します。
"/subscriptions/c276fc76-9cd4-44c9-99a7-4fd71546436e/resourceGroups/Network"
すべての要求元に対して割り当て用のロールのスコープを使用可能に指定します。
"/"
ロールを作成するときに考慮する必要があること
Azure RBAC でのロール定義の作成については、次の点を考慮してください。
組み込みのロールの使用を検討する。 Azure RBAC で組み込みのロール定義の一覧を確認します。 "所有者"、"バックアップ オペレーター"、"Web サイト共同作成者"、"SQL セキュリティ管理者" など、100 を超える定義済みのロール定義から選択できます。 組み込みロールは、一般、ネットワーク、ストレージ、データベースなど、いくつかのカテゴリのサービス、タスク、ユーザーに対して定義されます。
カスタム定義を作成することを検討する。 組織の特定のビジネス シナリオを満たすように、独自のカスタム ロールを定義します。 組織の特定の要件を満たすように、組み込みロールのアクセス許可を変更できます。 カスタム ロール定義を最初から作成することもできます。
アクセス スコープを制限することを検討する。 職務を遂行するために必要なスコープの最小レベルでロールを割り当てます。 管理者のような一部のユーザーは、インフラストラクチャを維持するために企業リソースへのフル アクセスを必要とします。 組織内の他のユーザーは、個人またはチーム リソースへの書き込みアクセスと、会社の共有リソースへの読み取り専用アクセスが必要になる場合があります。
データの変更を制御することを検討する。 特定のシナリオでのみ変更する必要があるデータまたはリソースを特定し、厳密なアクセス制御を適用します。 作業を完了するために必要な最小限のアクセス権にユーザーを制限します。 適切に計画されたアクセス管理戦略は、インフラストラクチャを維持し、セキュリティの問題を防ぐのに役立ちます。
拒否の割り当てを適用することを検討する。 拒否の割り当て機能を実装する必要があるか判断します。 ロールの割り当てと同様に、"拒否割り当て" ではアクセスの拒否を目的として、特定のスコープでユーザー、グループ、またはサービス プリンシパルに一連の拒否アクションがアタッチされます。 拒否割り当てを使用すると、ロールの割り当てでアクセスを許可されている場合であっても、指定した Azure リソース アクションをユーザーが実行できなくなります。