皆さまこんにちは。SB C&S 井上です。
今回は、Azureリソースへのアクセス権管理機能である「RBAC(ロールベースのアクセス制御)」と、必要なアクセス権を組み合わせて独自のロールを作成できる「カスタムロール」について、作成・割り当て方法も含めてご紹介いたします。
概要
RBAC(ロールベースのアクセス制御)とは、Azureのリソースにアクセスできるユーザーを制限したり、ユーザーがリソースに対して行える操作を制限したりできる、Azureリソースへのアクセス権管理機能です。
RBACを使うことで、例えば技術部のリソースグループと配下のリソースには技術部メンバーのみがアクセスできるように制限したり、ネットワーク管理者がテナント内のネットワーク関連リソースのみにアクセスできるように制限したりなど、各ユーザーのロール(役割)に応じたアクセス権を付与することができます。
ITインフラの管理において「最小特権の原則」に則った運用はセキュリティ観点からも非常に重要であり、Azureでもタスク遂行のために必要な最小限の特権をユーザーに付与してセキュリティを向上させることが推奨されています。
RBACではあらかじめアクセス許可(例えば仮想マシンの読み取りを許可など)を組み合わせて作成された「組み込みロール」が複数用意されており、このロールをユーザーに割り当てることで簡単に最小特権の原則を実現することができます。
また、必要なアクセス権の要件が組み込みロールでは満たせない場合、ロールの定義を自分で組み合わせて独自の「カスタムロール」を作成してユーザーに割り当てることも可能です。
RBACの要素
ロールの割り当ては以下3つの要素で構成され、これらの要素をそれぞれ選択してロールの割り当てを行うことで、RBACによるアクセス制限が有効化されます。
- セキュリティプリンシパル
- ロール定義
- スコープ
セキュリティプリンシパル
セキュリティプリンシパルはAzureリソースへのアクセスを要求する対象を表すオブジェクトです。
ロールの割り当てを構成する要素の一つで、「誰に対して」アクセス権を割り当てるかを選択します。
セキュリティプリンシパルで設定できる対象は以下の4つです。
- ユーザー
-Azure AD内にプロファイルを持つユーザー - グループ
-Azure AD内に作成されたユーザーセット - サービスプリンシパル
-アプリケーションやサービスがAzureリソースにアクセスする際に使用されるセキュリティID - マネージドID
-Azureで自動管理されるAzure AD内のID
ロール定義
ロール定義は複数のアクセス許可を組み合わせたコレクションです。
ロール割り当てを構成する要素の一つで、「どのようなアクセス権を」割り当てるかを選択します。
ロール定義には、あらかじめ用意されている「組み込みロール」と、独自にアクセス許可を組み合わせて作成できる「カスタムロール」があります。
組み込みロールはAzureで複数用意されており、以下が代表的なロールです。
- 所有者
-全てのAzureリソースへのフルアクセス権及び他ユーザーへのアクセス委任権限 - 共同作成者
-全てのAzureリソースの作成/管理権限 - 閲覧者
-既存のAzureリソースの閲覧権限
上記の組み込みロールは全てのAzureリソースへのアクセス権を付与できますが、これ以外の組み込みロールでは特定のAzureリソースへのアクセス権を付与します。
例えば仮想マシン共同作成者ロールやネットワーク共同作成者ロールなどのように、特定のAzureリソースに対してのみのアクセス権を付与することができます。
また、カスタムロールでは独自にアクセス許可を組み合わせてロール定義を作成することができます。
組み込みロールで用意されていないアクセス制御が必要な場合は、GUIやJSONで1からカスタムロールを作成するか、既存のロール定義を元に編集して作成することで、独自のロール定義(カスタムロール)を利用したアクセス制限が可能になります。
スコープ
スコープはアクセス権が適用されるリソース(リソース群)です。
ロール割り当てを構成する要素の一つで、「どのリソースを対象に」アクセス権を割り当てるかを選択します。
スコープとして選択できるのは以下4つです。
- 管理グループ
-複数のサブスクリプションを管理 - サブスクリプション
-複数のリソースグループを管理 - リソースグループ
-複数のリソースを管理 - リソース
-個々のAzureリソース
スコープは上から順に親子関係で階層化されています。
そのため、例えばスコープとしてサブスクリプションを選択した場合、サブスクリプション配下の全てのリソースグループ、リソースがスコープの対象となります。
また、既存の組み込みロールでは上記4つのスコープを選択可能ですが、カスタムロールではスコープとしてサブスクリプションかリソースグループのみ選択可能なのでご注意ください。
RBACの設定方法
今回はRBACの設定方法について、以下3つをご紹介します。
- 組み込みロールによるRBAC設定方法
- カスタムロール作成方法
- カスタムロールによるRBAC設定方法
設定方法1. 組み込みロールによるRBAC設定方法
※今回は仮想マシン共同作成者ロールをユーザーに付与
1. Azure Portalで、アクセス制御を設定するスコープを表示 (今回は仮想マシン)
2. ブレードの [アクセス制御(IAM)] を選択し、[+追加] > [ロールの割り当ての追加] をクリック
3. [役割] でロール定義、[アクセスの割り当て先] でロールを割り当てるセキュリティプリンシパルの種類、
[選択] でロールを割り当てる対象を選択し、[保存] をクリック
4. ロールを割り当てたユーザーでAzure Portalにサインインし、
アクセス制御が正常に動作していることを確認
設定方法2. カスタムロール作成方法
※今回は仮想マシンの起動、割り当て解除、再起動のみ許可するロールを作成
1. Azure Portalで、アクセス制御を設定するスコープを表示 (サブスクリプション or リソースグループ)
2. ブレードの [アクセス制御(IAM)] を選択し、[+追加] > [カスタムロールの追加] をクリック
3. [カスタムロール名]、[説明]、[ベースラインのアクセス許可] を任意に入力し、[次へ] をクリック
4. アクセス許可の追加や削除を行い、[次へ] をクリック
5. 割り当て可能なスコープの追加と削除を行い、[次へ] をクリック
(複数のリソースグループにカスタムロールを割り当てる場合は、
割当先リソースグループを全て追加するか、親サブスクリプションを追加する)
6. JSONを確認し、必要に応じて [actions] や [notActions] などに
アクセス許可を追加し、[次へ] をクリック
7. 設定値を確認し、[作成] をクリック
設定方法3. カスタムロールによるRBAC設定方法
1. Azure Portalで、アクセス制御を設定するスコープを表示 (今回はリソースグループ)
※カスタムロールを割り当てられるスコープは、サブスクリプションかリソースグループのみ
2. ブレードの [アクセス制御(IAM)] を選択し、[+追加] > [ロールの割り当ての追加] をクリック
3. [役割] で設定方法2.で作成したカスタムロール、
[アクセスの割り当て先] でロールを割り当てるセキュリティプリンシパルの種類、
[選択] でロールを割り当てる対象を選択し、[保存] をクリック
4. ロールを割り当てたユーザーでAzure Portalにサインインし、
アクセス制御が正常に動作していることを確認
まとめ
今回はAzureリソースへのアクセス権管理機能であるRBAC(ロールベースのアクセス制御)の設定方法とカスタムロールの作成方法をご紹介しました。
RBACでは初めから多くの組み込みロールが用意されているため、ユーザーのアクセス権管理を簡単に行うことができます。
また、組み込みロールで用意されていないロール定義が必要な場合は、独自のカスタムロールを作成することができるので、より柔軟なアクセス権管理が可能になります。
Azure Portalにアクセス可能なユーザーに対しては、最小特権の原則を元にRBACの適切なロールを割り当ててアクセス権を管理することをお勧めします。
最後までお読みいただきありがとうございました!
他のおすすめ記事はこちら
著者紹介
SB C&S株式会社
ICT事業本部 技術本部 第1技術部 4課
井上 雄貴
新卒でSB C&S株式会社に入社後、Azureのプリセールスエンジニアとして案件支援、新規サービスの技術検証などに従事。
JDLA Deep Learning for ENGINEER 2019 #1を保有。
クラウド、AIのエキスパートエンジニアを目指し、日々邁進中。