Azureのアクセス制限について カスタムロールとは
カスタムロールとは
Azureではリソースへのアクセス権限をロールというもので管理しています。そのロールをユーザーが独自に設定したものがカスタムロールです。
皆さんの社内でも特定のサーバーのアクセス権は限られた人物にしかできないような設定がしてあることでしょう。自分が管理するプロジェクトではファイルをプロジェクト内の人物にしか見られないようアクセス権を設定したことがあるかもしれません。そのような設定がAzureでももちろん可能です。クラウド内のリソースへのアクセス権限をAzureではロールといいます。
Azure RBAC
Azureではロールベースによるアクセス制御をRBAC(Roll-Based Access Control)と呼んでいます。これによりあるユーザーに仮想マシンの管理を許可したり、別のユーザーには仮想ネットワークの管理を許可しありすることができます。
Azure RBCAのしくみ
ユーザーに対しロールを割り当てることで権限を操作します。このロールの割り当ては下記3つの要素で構成されます。
セキュリティプリンシパル
Azureのロールを割り当てることができるオブジェクトです。
ユーザー、グループ、サービスプリンシパル、マネージドIDの4種類です。
ロールの定義
ロールはアクセス許可の集まりです。どの操作が可能かが登録されています。
スコープ
アクセスが適用される範囲を指定します。管理グループ、サブスクリプション、リソースグループ、リソースの4つのレベルで指定ができ親子関係で構造化されています。
以上の要素を持つロールを割り当てることで権限を制御します。Azureのロール権限は加算式で複数のロールが割り当てられていた場合は合算されます。ロール権限は基本的に許可される権限が定義されていますが、許可しない拒否権限が定義されているロールを割り当てる拒否割り当てもあります。
組み込みロールとカスタムロール
ロールには許可権限セットがあらかじめ用意されている組み込みロールと、独自にロールを作成するカスタムロールの2種類があります。組み込みロールは相当数用意されていますがニーズを満たさない場合はカスタムロールを作成する必要があります。
カスタムロールの作成方法
カスタムロールはAzure AD ディレクトリを共有する複数のサブスクリプションで共有できます。ディレクトリあたり5000個という制限があります。カスタムロールはロールのプロパティを編集して作成します。Azure PowerShellでカスタムロールを編集する場合は下記のJSON形式のデータを編集します。
{ "Name": "", "Description": "", "Actions": [], "NotActions": [], "DataActions": [], "NotDataActions": [], "AssignableScopes": [] }
Azure portal、Azure CLI、または REST API で編集する場合はプロパティの名前が異なります。
{ "Name": "", "Id": "", "Description": "", "Actions": [], "NotActions": [], "DataActions": [], "NotDataActions": [], "AssignableScopes": [] }
以下がロールのプロパティの内容です。
ロールのプロパティ
プロパティ | 説明 |
---|---|
Name roleName | ロールの表示名です。Azure ADディレクトリ範囲で一意である必要があります。 |
Id name | ロールを識別する一意のIDです。 |
IsCustom roleType | カスタムロールの場合はtrueあるいはCustomRole、そうでない場合はfalseあるいはBuiltInRoleです。 |
Description description | ロールの説明欄です。最大文字数は1024文字です。 |
Actions actions | ロールで実行できる管理操作を示す文字列配列です。 |
NotActions notActions | Actionsから除外する管理操作を指定する文字列配列です。 |
DataActions dataActions | 対象のオブジェクト内のデータに対して操作を指定する文字列配列です。 |
NotDataActions notDataActions | DataActionsから除外するデータ操作を指定する文字列配列です。 |
AssignableScopes assignableScopes | このロール定義を使用できるスコープを指定します。 |
ActionやDataActionsで定義される操作形式の文法は下記です。
{Company}.{ProviderName}/{resourceType}/{action} 例"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read"
この{action}部分には下記の操作種類を指定することで操作を制御します。
アクションの部分文字列 | 説明 |
---|---|
* | すべての操作に対するアクセスを許可します。 |
read | 読み取り操作(Get)を有効にします。 |
write | 書き込み操作(PUTまたはPATCH)を有効にします。 |
action | 仮想マシンの再起動(POST)などのカスタム操作を有効にします。 |
delete | 削除操作(DELETE)を有効にします。 |
カスタムロールの作成手順
Azure Portal,Azure PowerShell,Azure CLIまたはREST APIを使用して作成できます。必要なアクセス許可の操作を確認し、ActionやDataActionsに追加します。通常は組み込みロールを土台に変更する場合が多いです。その後、実際の意図通りの動作をするかを確認し必要に応じ更新します。
最後に
カスタムロールとその作成方法についてご紹介しました。安全なインフラ運用には権限制御は欠かせません。ロールについての理解を深め運用していきましょう。