「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-[[戻る>Azure]]
--[[Azureのアクセス制御と権限]]
--[[Azure Resource Manager (ARM)]]

* 目次 [#ga39c47d]
#contents

*概要 [#g05b61f4]
-アクセス権は、

--Azure ポータル、
--Azure コマンドライン ツール、
--および Azure 管理 API

>を使用して割り当てる。

-Azure ポータルで RBAC を設定する場合、~
Access Control(IAM : Identity and Access Management)から行う。

-[[スコープ>#ae75b754]]に対する特定アクションにアクセスできるユーザを~
ロールベースのアクセス制御 (RBAC : Role Based Access Control)で制御できる。

-アクセス権を付与するには、
--ユーザ、グループ、[[サービス>#i74de7a8]]に[[ロール>#ea4f95c8]]を[[割り当て>#n913d126]]、
--それを、特定の[[スコープ>#ae75b754]]に[[関連付け>#z2c99ad1]]る。

*ロール [#ea4f95c8]

**ロールの定義 [#e76e3def]
アクセス権は、

-[[操作(主)>#n783488c]]
-[[データ操作(副)>#m4f4d382]]

のアクセス許可セット的なもの。

***操作(主) [#n783488c]
-Actions、NotActionsを定義して、AssignableScopesの[[スコープ>#ae75b754]]に関連付けるる。
-操作のアクセス権は、Actionsの操作からNotActionsの操作を差し引くことで算出される。

***データ操作(副) [#m4f4d382]
-DataActions、NotDataActionsを定義して、AssignableScopesの[[スコープ>#ae75b754]]に関連付ける。
-データ操作のアクセス権は、DataActionsの操作からNotDataActionsの操作を差し引くことで算出される。

※ ただし、対応リソースが少ない(通常データ・ストアに依存した機能を使用する)ため、あまり使用しない。

***定義の例 [#y22a4be5]
 {
   "Name":  "Storage Blob Data Reader (Preview)",
   "Id":  "2a2b9908-6ea1-4ae2-8e65-a410df84e7d1",
   "IsCustom":  false,
   "Description":  "Allows for read access to Azure Storage blob containers and data",
   "Actions":  [
     "Microsoft.Storage/storageAccounts/blobServices/containers/read"
   ],
   "NotActions":  [],
   "DataActions":  [ 
     "Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read"
   ],
   "NotDataActions":  [],
   "AssignableScopes":  [
     "/"
   ]
 }

**ロールの種類 [#p2c79aeb]
ロールの種類には、
-[[組み込みロール>#j27599ed]]
-[[カスタム・ロール>#gc65de81]]

がある。

***組み込みロール [#j27599ed]
ユーザ、グループ、[[サービス>#i74de7a8]]に[[割り当て>#n913d126]]られる組み込みのロールが用意されている。~
ただし、説明文は的確ではない表現も多いため、必ず中身をしっかり確認すること。

-4つのプラットフォーム ロール
--所有者(Owner)~
「アクセス権の割当」を含め、全てを管理できる。
--共同作業者(Contributor)~
「アクセス権の割当」以外の、全てを管理できる。
--閲覧者(Reader)~
すべてを閲覧できるが、変更はできない。
--ユーザ・アクセス管理者(User Access Administrator)~
Azure リソースへのユーザ アクセスを管理できる。

-リソース固有ロール

--ネットワークの共同作業者~
他の「リソース固有ロール」に含まれない~
ネットワーク系の設定変更が可能となっている。
---すべてのネットワーク リソースを管理できるが、
---ネットワーク リソースのアクセス許可は設定できない。

--仮想マシンの共同作業者~
(Virtual Machine Contributor)
---仮想マシンを管理できるが、
---仮想マシンのアクセス許可は設定できない。
---接続先の[[仮想ネットワーク>Azureの仮想ネットワーク]]または[[ストレージ・アカウント>Azureのストレージ#t36c3007]]の管理はできない。

--[[ストレージ・アカウント>Azureのストレージ#t36c3007]]の共同作業者
---[[ストレージ・アカウント>Azureのストレージ#t36c3007]]を管理できるが、
---[[ストレージ・アカウント>Azureのストレージ#t36c3007]]のアクセス許可は設定できない。

--SQL Server の共同作業者~
(SQL Server Contributor)
---SQL サーバーおよびデータベースを管理できるが、
---そのセキュリティ関連ポリシーは設定できない。

--Web サイトの共同作業者~
(Web Site Contributor)
---Web サイトを管理できるが、
---接続されている Web プランは設定できない。

--, etc. (全部で70種類程ある)

***カスタム・ロール [#gc65de81]
組み込みのロールの中にアクセス権に関する特定の要件を満たすものがない場合、~
Azure のロールベースのアクセス制御 (RBAC) で[[カスタム・ロール>#nec899f1]]を作成する。

-ただし、極力、カスタム・ロールは作らないようにする。

-スコープをリソース・グループやリソース単位に絞って、~
共同作業者(Contributor)ロールを設定することで対応可能。

***参考 [#o740dd43]
-Microsoft Azure サポート チーム サイト
--Microsoft Azure の各種アカウント権限について~
https://blogs.msdn.microsoft.com/dsazurejp/2013/10/02/303/
--アカウント管理者・サービス管理者・共同管理者の変更方法について~
https://blogs.msdn.microsoft.com/dsazurejp/2013/10/02/293/

-Azure サブスクリプション管理者を追加または変更する~
https://docs.microsoft.com/ja-jp/azure/cost-management-billing/manage/add-change-subscription-administrator#types-of-azure-admin-accounts

*スコープ [#ae75b754]
[[ロール>#ea4f95c8]]に[[関連付け>#z2c99ad1]]るスコープ

**指定できるスコープ [#i040f172]
-サブスクリプション
-リソース・グループ
-または単独のリソース

**アクセス権の継承 [#q8598e80]
各[[スコープ>#ae75b754]]は、以下のようにRBACを継承する。

>サブスクリプション <--- [[リソース・グループ>Azure Subscriptionの管理手順@エンプラ#if3a99f1]] <--- リソース

-親スコープで[[ロール>#ea4f95c8]]が[[関連付け>#z2c99ad1]]られると、~
その親に含まれる子へのアクセス権も付与される。

-例えば、リソース・グループへのアクセス権を持つユーザは、~
Web サイト、仮想マシン、サブネットなど、~
リソース・グループに含まれるすべてのリソースを管理できる。

*アクセス権の割当 [#k1ba75af]
サブスクリプションの所有者は~

-他のユーザ・グループに詳細な[[ロール>#ea4f95c8]]を[[割り当て>#n913d126]]、
-上記を[[スコープ>#ae75b754]]に[[関連付け>#z2c99ad1]]

ると、当該リソースを管理できるようになる。

**割り当て [#n913d126]
管理機能を使用して、以下のように

>[[ロール>#ea4f95c8]] <--->(ユーザ <---> グループ) 

ユーザ・グループに詳細な[[ロール>#ea4f95c8]]を割り当てる。

**関連付け [#z2c99ad1]
管理機能を使用して、以下のように

>[[ロール>#ea4f95c8]] <--->(ユーザ <---> グループ)<---> [[スコープ>#ae75b754]]

[[上記>#n913d126]]を[[スコープ>#ae75b754]]に関連付ける。

*設定例 [#g03fbf16]

**組み込みロール [#j117f124]

***管理者用の組み込みロール [#kc0d5a6e]
[[組み込みロール>#j27599ed]]を使用する。
-プラットフォーム ロール
-リソース固有ロール

***作業者用の組み込みロール [#tb97e0ed]
[[組み込みロール>#j27599ed]]を使用する。
-プラットフォーム ロール
-リソース固有ロール

**カスタム・ロール [#nec899f1]

***管理者用カスタム・ロールの例 [#ka8ea084]

***作業者用カスタム・ロールの例 [#f47adf4e]
-「DevTest Labs User」組込ロールを更に絞った、~
「仮想マシンの起動と停止」カスタム・ロールを作成。

--[[Azure Cloud Shell]]などを使用して以下を実行。
---SubsctionId を確認
 Get-AzureRmSubscription
---カスタム・ロールを作成
 $role = Get-AzureRmRoleDefinition "Virtual Machine Contributor"
 
 $role.Id = $Null
 $role.Name = "仮想マシンの起動と停止"
 $role.Description = "仮想マシンの起動と停止、再起動ができます"
 
 $role.Actions.Clear()
 $role.Actions.Add("Microsoft.Compute/VirtualMachines/start/action")
 $role.Actions.Add("Microsoft.Compute/VirtualMachines/restart/action")
 $role.Actions.Add("Microsoft.Compute/VirtualMachines/read")
 $role.Actions.Add("Microsoft.Compute/virtualMachines//read")
 $role.Actions.Add("Microsoft.Compute/VirtualMachines/deallocate/action")
 
 $role.AssignableScopes.Clear()
 $role.AssignableScopes.Add("/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx") <--- Get-AzureRmSubscription で取得した SubsctionId を指定。
 
 New-AzureRmRoleDefinition -Role $role

-[[その他の定義方法>#l8d5f516]]~
既存ロールをJSON形式で参照し、そこからカスタマイズする方法が一般的らしい。
--Azureポータル
--[[Azure PowerShell]]
--[[Azure CLI]]
--REST API
--Azure Resource Manager テンプレート

**サービス [#i74de7a8]
***[[Azure サービス プリンシパル]] [#b53fec12]
***[[Azure Managed ID]] [#e6c5bf60]

*参考 [#z29ebd51]

**Microsoft Docs [#d3c11fe6]

***概要 [#zfa3b6eb]
-Azure ロールベースのアクセス制御 (Azure RBAC) とは~
https://docs.microsoft.com/ja-jp/azure/role-based-access-control/overview
-従来のサブスクリプション管理者ロール、Azure ロール、および Azure AD ロール~
https://docs.microsoft.com/ja-jp/azure/role-based-access-control/rbac-and-directory-admin-roles

***ロールの定義 [#l8d5f516]
-チュートリアル : ...を使用して Azure カスタム ロールを作成する~
--[[Azure PowerShell]]~
https://docs.microsoft.com/ja-jp/azure/role-based-access-control/tutorial-custom-role-powershell
--[[Azure CLI]]~
https://docs.microsoft.com/ja-jp/azure/role-based-access-control/tutorial-custom-role-cli

-Azure リソースのアクセス権の割り当ての確認~
https://docs.microsoft.com/ja-jp/azure/active-directory/role-based-access-control-manage-assignments

***ロールの種類 [#m78cd5ca]
-Azure 組み込みロール - Azure RBAC~
https://docs.microsoft.com/ja-jp/azure/role-based-access-control/built-in-roles
-Azure カスタム ロール - Azure RBAC~
https://docs.microsoft.com/ja-jp/azure/role-based-access-control/custom-roles

***ロールの割当 [#z1941e30]
-を使用して Azure ロールを割り当てる - Azure RBAC
--Azure portal~
https://docs.microsoft.com/ja-jp/azure/role-based-access-control/role-assignments-portal
--[[Azure PowerShell]]~
https://docs.microsoft.com/ja-jp/azure/role-based-access-control/role-assignments-powershell
--[[Azure CLI]]~
https://docs.microsoft.com/ja-jp/azure/role-based-access-control/role-assignments-cli
--REST API~
https://docs.microsoft.com/ja-jp/azure/role-based-access-control/role-assignments-rest
--Azure Resource Manager テンプレート~
https://docs.microsoft.com/ja-jp/azure/role-based-access-control/role-assignments-template

**その他 [#l0030995]
-ロールベースのアクセス制御のカスタム ロールを作成して Azure の内部および外部ユーザーに割り当てる~
https://docs.microsoft.com/ja-jp/azure/active-directory/role-based-access-control-create-custom-roles-for-internal-external-users

-Azure リソースの RBAC でカスタムロールを作成する – Junichi Anno's blog~
https://blogs.technet.microsoft.com/junichia/2016/12/13/azure-%E3%83%AA%E3%82%BD%E3%83%BC%E3%82%B9%E3%81%AE-rbac-%E3%81%A7%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E3%83%AD%E3%83%BC%E3%83%AB%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B/

----
Tags: [[:インフラストラクチャ]], [[:クラウド]], [[:Azure]], [[:セキュリティ]]

Tags: [[:セキュリティ]], [[:アカウント]], [[:クラウド]], [[:認証基盤]], [[:Azure]], [[:Active Directory]]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS