- 追加された行はこの色です。
- 削除された行はこの色です。
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。
-[[戻る>Azure Subscriptionの管理@エンプラ]]
-[[戻る>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]
***作業者用の組み込みロール [#tb97e0ed]
[[組み込みロール>#j27599ed]]を使用する。
-プラットフォーム ロール
-リソース固有ロール
***管理者用の組み込みロール [#kc0d5a6e]
[[組み込みロール>#j27599ed]]を使用する。
-プラットフォーム ロール
-リソース固有ロール
**カスタム・ロール [#nec899f1]
***作業者用カスタム・ロールの例 [#f47adf4e]
「DevTest Labs User」組込ロールを更に絞った、~
「仮想マシンの起動と停止」カスタム・ロールを作成。
-[[準備>Azure PowerShell#m3b29bfc]]
-カスタム・ロールを作成
$role = Get-AzRoleDefinition "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")
--Doscの例
$role.Actions.Add("Microsoft.Compute/virtualMachines/start/action")
$role.Actions.Add("Microsoft.Compute/virtualMachines/restart/action")
$role.Actions.Add("Microsoft.Storage/*/read")
$role.Actions.Add("Microsoft.Network/*/read")
$role.Actions.Add("Microsoft.Compute/*/read")
$role.Actions.Add("Microsoft.Authorization/*/read")
$role.Actions.Add("Microsoft.Resources/subscriptions/resourceGroups/read")
$role.Actions.Add("Microsoft.ResourceHealth/availabilityStatuses/read")
$role.Actions.Add("Microsoft.Insights/alertRules/*")
$role.Actions.Add("Microsoft.Support/*")
--イイ感じのヤツ
$role.Actions.Add("Microsoft.Compute/VirtualMachines/start/action")
$role.Actions.Add("Microsoft.Compute/VirtualMachines/restart/action")
$role.Actions.Add("Microsoft.Compute/VirtualMachines/deallocate/action")
$role.Actions.Add("Microsoft.Storage/*/read")
$role.Actions.Add("Microsoft.Network/*/read")
$role.Actions.Add("Microsoft.Compute/*/read")
$role.Actions.Add("Microsoft.Authorization/*/read")
$role.Actions.Add("Microsoft.Resources/subscriptions/resourceGroups/read")
$role.Actions.Add("Microsoft.ResourceHealth/availabilityStatuses/read")
$role.Actions.Add("Microsoft.Insights/alertRules/*")
$role.Actions.Add("Microsoft.Support/*")
>
$role.AssignableScopes.Clear()
$role.AssignableScopes.Add("/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx") <--- SubsctionId を指定。
New-AzRoleDefinition -Role $role
-ロールをサブスクリプション・スコープに適用
>New-AzRoleAssignment
--以下は二者択一のオプション~
ユーザを指定する
-ObjectId <objectId>
-SignInName <emailOrUserprincipalname>
※ [[UPNの例>Azure Active Directory B2B collaboration#u93d3536]]
--以降のオプション
-RoleDefinitionName "仮想マシンの起動と停止" `
-Scope /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx` <--- SubsctionId を指定。
-ロールの更新~
JSONを使ったGET&SETで更新する。
--GET
>Get-AzRoleDefinition -Name "仮想マシンの起動と停止" `
| ConvertTo-Json `
| Out-File -FilePath "D:\custom_role.json"
--JSONをメンテ~
---自動シャットダウンを構成
"Microsoft.DevTestLab/schedules/*",
"Microsoft.Compute/virtualMachines/write",
---参考:azure - How to add Custom Role for “Virtual Machine operator” to set Auto-shut down - Stack Overflow~
https://stackoverflow.com/questions/57263562/how-to-add-custom-role-for-virtual-machine-operator-to-set-auto-shut-down
--SET
>Set-AzRoleDefinition -InputFile "D:\custom_role.json"
--設定の反映には、アカウントの~
サインアウト → サインインが必要。
-参考:[[その他の定義方法>#l8d5f516]]~
既存ロールをJSON形式で参照し、そこからカスタマイズする方法が一般的らしい。
--[[Azure PowerShell]], [[Azure CLI]]
--[[Azure Resource Manager テンプレート]]
--[[AzureポータルやREST API>Azureの管理ポータルとARM API]]
***管理者用カスタム・ロールの例 [#ka8ea084]
-特定のリソース・グループに、
>仮想マシンの共同作業者~
(Virtual Machine Contributor)
>の権限だけ付与する。
>New-AzRoleAssignment
--以下は二者択一のオプション~
ユーザを指定する
-ObjectId <objectId>
-SignInName <emailOrUserprincipalname>
※ [[UPNの例>Azure Active Directory B2B collaboration#u93d3536]]
--以降のオプション
-RoleDefinitionName "Virtual Machine Contributor" `
-ResourceGroupName [既存のRG名]
-VM作成の権限不足~
上記では権限が足りないのでポータルから追加してみる。
--対象のリソース・グループの[アクセス制御 (IAM)] で [追加]を押下し、~
ドロップダウンリストから[カスタム ロールの追加]を選択。
---[[前述>#f47adf4e]]のようなカスタム ロールの定義を入力していく。~
・カスタム ロールの名称と説明を入力~
・エラー メッセージを参考に権限(アクセス許可)を追加
---[確認と作成] → [作成]ボタンを押下する。
--対象のリソース・グループの[アクセス制御 (IAM)] で [追加]を押下し、~
ドロップダウンリストから[ロールの割り当ての追加]を選択。
---[役割]のドロップダウンリストから作成したカスタム ロールを選択。
---[選択]で対象となるユーザ(若しくはグループ)を選択する。
---[保存]ボタンを押下する(結果は[ロールの割り当て]タブから確認できる。
--更新は[役割]タブから行う(役割=ロールだよね...)。
---[種類]でソートして[CustomRole]から対象のモノを検索
---[...]から[編集]を選択して、JSONを編集して保存する。
---参考情報から、実際に追加が必要になるのは以下。
"Microsoft.Network/networkSecurityGroups/read",
"Microsoft.Network/networkSecurityGroups/write",
"Microsoft.Network/publicIpAddresses/write",
"Microsoft.Network/publicIpAddresses/read",
※ ただし、ここでは、PublicIP追加の権限は付与しない。
-参考
--Virtual Machine Contributor – Can’t create a VM with PublicIP or Network Security Group | Toggen Technology~
https://toggen.com.au/it-tips/virtual-machine-contributor-cant-create-a-vm/
**ロール作成と付与のポイント [#q378e6e0]
-参考
--Azure VM と JIT 操作だけを許可するロール付与方法~
http://www.vwnet.jp/Windows/Azure/2020081501/AzureVmJitRole.htm
***付与 [#f27d89ff]
-「サブスクリプション → リソース・グループ → リソース」の[[スコープ>#ae75b754]]がある。
-上位に付与した権限を下位で拒否できないので、~
最小限、許可するものダケを積み重ねていく。
--上位スコープには最小限の参照系の権限を付与し、
--下位スコープには具体的作業に必要な更新系の権限を付与する。
***作成 [#w14caa07]
カスタムロールに含めるロール・アクションの探し方
-trial and error的で非効率的だが、errorからたどるのが一番確実。
-ドキュメント系は、現時点では、まだ、完全に書かれたものは少ない。
*その他 [#u15d8b09]
**サービスの場合 [#i74de7a8]
***[[Azure サービス プリンシパル]] [#b53fec12]
***[[Azure Managed ID]] [#e6c5bf60]
**[[JITロール割り当て>Azureのアクセス制御と権限#p2148b0a]] [#xae55a5b]
*参考 [#z29ebd51]
-Azure 管理者サブスクリプション ロールを追加または変更する~
https://docs.microsoft.com/ja-jp/azure/billing/billing-add-change-azure-subscription-administrator#types-of-azure-admin-accounts
**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
-Azure リソース プロバイダーの操作~
https://docs.microsoft.com/ja-jp/azure/role-based-access-control/resource-provider-operations
***ロールの種類 [#m78cd5ca]
-Azure RBAC
--Azure 組み込みロール~
https://docs.microsoft.com/ja-jp/azure/role-based-access-control/built-in-roles
--Azure カスタム ロール~
https://docs.microsoft.com/ja-jp/azure/role-based-access-control/custom-roles
***ロールの割当 [#z1941e30]
-Azure RBAC
--チュートリアル:Azure portal を使用して Azure~
リソースへのアクセス権をユーザーに付与する~
https://docs.microsoft.com/ja-jp/azure/role-based-access-control/quickstart-assign-role-user-portal
--を使用して Azure ロールを割り当てる
---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
***操作方法ガイド [#y8db04f4]
https://docs.microsoft.com/ja-jp/azure/role-based-access-control/role-definitions-list
-ロール定義の一覧表示
-ロールの割り当ての一覧表示
-ロールを割り当てる
-条件を追加または編集する
-ロールの割り当てを削除する
-拒否割当を一覧表示する
-カスタム ロールを作成する
-アクティビティ ログを表示する
-アクセス権を昇格する
-従来の管理者
-サブスクリプションを別のディレクトリに譲渡する
-トラブルシューティング
**その他 [#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]]