ロールベースのアクセス制御 (RBAC) の設定 - カスタムロールの使用

みなさんこんにちは。Azure サポートチームの小久保です。

Microsoft Azure ではロールベース アクセス制御 (以下 RBAC) という機能を使用して、アクセスできるリソースの種類を制限したり、そのリソースに対する操作を制限することが可能です。本記事では比較的お問い合わせとして多くご質問をいただく、RBAC の設定の仕方・例についてご紹介をいたします。

 

今回は、既に Azure 内に用意されている組み込みロールではなく、ユーザー独自に作成したカスタムロール作成し、ユーザーへ適用する方法についてご紹介します。組み込みロールについては、以下のドキュメントにも記載がありますのでご参照ください。

 

※本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。

 

シナリオ


今回は、以下のシナリオの手順をご紹介いたします。

ユーザー X に対して、サブスクリプションのすべてのリソースへのアクセスは行わせたいが、ストレージアカウントの作成や変更は許可したくない。

 

作業の流れ


  1. カスタムロールを定義し .json 形式 のファイルとしてローカル PC に保存します。
  2. 作成したカスタムロール構成ファイルをサブスクリプションに登録します。
  3. 権限を付与したいリソースを選択します。複数のスコープレベルで構成可能です。
    (サブスクリプションレベル、リソースグループレベル、各リソースレベルのいずれか)
  4. 登録したカスタムロールを選択します。
  5. 権限を付与したいユーザーを選択します。

 

作業手順


1. カスタムロールを定義し .json 形式 のファイルとしてローカル PC に保存します。

今回のシナリオでは、ストレージ アカウントの作成や変更を制限したいという要望を実現する為、NotActions にストレージ アカウントの write のオペレーションを入れています。また、その他のオペレーションについては、すべて許可する為 * を指定しています。以下はサンプル構成ですが "< ~ >" をご利用の環境に合わせ、適切なものに書き換えてご使用ください。

 {
  "Name": "<カスタムロール名>",
  "IsCustom": true,
  "Description": "<ロールの説明>",
  "Actions": [
    "*"
  ],
  "NotActions": [
    "Microsoft.Storage/storageAccounts/write"
  ],
  "AssignableScopes": [
    "/subscriptions/<サブスクリプション ID>"
  ]
}

各項目の詳細な説明は、以下の公開情報をご参照ください。

 

Action / NotAction に指定可能なオペレーションについては、以下の Azure PowerShell コマンドで確認が可能です。

 Get-AzureRmProviderOperation *

 

サブスクリプション ID を確認する方法は、以下の公開情報をご参照ください。

 

2. 作成したカスタムロールをサブスクリプションに登録します。

以下のコマンドを実行し、ローカル PC に保存した カスタムロールの構成 (json ファイル) を Azure に新しいカスタムロールとして登録します。

 # Login
Login-AzureRmAccount
    
# Select Subscription
Select-AzureRmSubscription -SubscriptionId <サブスクリプション ID>

# Create Custom Role
New-AzureRmRoleDefinition -InputFile <jsonファイルへのファイルパス>

 

3. 権限を付与したいリソースを選択します。

手順 1 の json ファイルの [AssignableScopes] に指定したリソースを開きます。今回のテストでは、サブスクリプションを指定している為、サブスクリプションを選択します。そうすると選択したサブスクリプションのブレードが開きます。(参考: ポータルで表示される 1画面のことを「ブレード」と言います)
SelectSubscription
[すべての設定] をクリック後、[設定] ブレードにて、[ユーザー] を選択します。 (リソースグループレベル、各リソースレベルで設定したい場合は、該当の項目を選択の上、[アクセス制御 (IAM)] を選択してください。)

 

4. 登録したカスタムロールを選択します。

[ユーザー] ブレードの画面上部の [追加] ボタンを押下し、下記の通り [役割を選択] ブレードにて、新しく追加したカスタムロール名 (json ファイル内の Name に指定したカスタムロール名) を選択します。
SelectCustomRole

 

5. 権限を付与したいユーザーを選択します。

[ユーザーを追加] ブレードでは、選択したロールを割り当てたいアカウントを選択・追加します。以上で設定が終われば、カスタムロールを割り当てたユーザーの追加は終了です。実際に役割を割り当てたアカウントでログインをしてみて、制限が行われているか、ご確認ください。

SelectUser

 

注意 ・ 補足事項


  • RBAC の機能は、新ポータル (https://portal.azure.com) から導入された新しい機能であり、 ARM デプロイモデルでのみ使用できる機能です。クラシックポータル(https://manage.windowsazure.com)へは、RBAC で権限を付与したユーザーでアクセスは行えないので、ご注意ください。クラシックポータルをご利用になりたい場合には、クラシックポータル内で、「共同管理者」の設定を行っていただく必要があります。
  • ユーザーへアクセス権限を付与できる対象 (スコープ) は、以下のレベルで設定が可能です。
    • 各リソースレベル ( e.g. 仮想マシン、仮想ネットワーク)
    • リソース グループレベル (設定したリソースグループ内にあるリソースに対して、設定されたロールの権限を持ちます)
    • サブスクリプションレベル (設定したサブスクリプション内にあるリソースグループ、リソースに対して、設定されたロールの権限を持ちます)
  • 各リソース (e.g. 仮想マシン) と サブスクリプション の両方に対してアクセス権限を付与した場合には、サブスクリプションに対するアクセス権が優先されます。

 

参考情報


RBAC を Azure PowerShell を使用して管理する場合には、以下をご参照ください。

RBAC で、Microsoft アカウントのユーザーを招待する場合には、下記の注意事項がありますのでご留意ください。