マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

  • アクセス権は、
  • Azure ポータル、
  • Azure コマンドライン ツール、
  • および Azure 管理 API

を使用して割り当てる。

  • Azure ポータルで RBAC を設定する場合、
    Access Control(IAM : Identity and Access Management)から行う。
  • スコープに対する特定アクションにアクセスできるユーザを
    ロールベースのアクセス制御 (RBAC : Role Based Access Control)で制御できる。

ロール

ロールの定義

アクセス権は、

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

操作(主)

  • Actions、NotActions?を定義して、AssignableScopes?スコープに関連付けるる。
  • 操作のアクセス権は、Actionsの操作からNotActions?の操作を差し引くことで算出される。

データ操作(副)

  • DataActions?NotDataActions?を定義して、AssignableScopes?スコープに関連付ける。
  • データ操作のアクセス権は、DataActions?の操作からNotDataActions?の操作を差し引くことで算出される。

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

定義の例

{
  "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":  [
    "/"
  ]
}

ロールの種類

ロールの種類には、

がある。

組み込みロール

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

  • 4つのプラットフォーム ロール
    • 所有者(Owner)
      「アクセス権の割当」を含め、全てを管理できる。
    • 共同作業者(Contributor)
      「アクセス権の割当」以外の、全てを管理できる。
    • 閲覧者(Reader)
      すべてを閲覧できるが、変更はできない。
    • ユーザ・アクセス管理者(User Access Administrator)
      Azure リソースへのユーザ アクセスを管理できる。
  • リソース固有ロール
  • ネットワークの共同作業者
    他の「リソース固有ロール」に含まれない
    ネットワーク系の設定変更が可能となっている。
    • すべてのネットワーク リソースを管理できるが、
    • ネットワーク リソースのアクセス許可は設定できない。
  • SQL Server の共同作業者
    (SQL Server Contributor)
    • SQL サーバーおよびデータベースを管理できるが、
    • そのセキュリティ関連ポリシーは設定できない。
  • Web サイトの共同作業者
    (Web Site Contributor)
    • Web サイトを管理できるが、
    • 接続されている Web プランは設定できない。
  • , etc. (全部で70種類程ある)

カスタム・ロール

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

  • ただし、極力、カスタム・ロールは作らないようにする。
  • スコープをリソース・グループやリソース単位に絞って、
    共同作業者(Contributor)ロールを設定することで対応可能。

参考

スコープ

ロール関連付けるスコープ

指定できるスコープ

  • サブスクリプション
  • リソース・グループ
  • または単独のリソース

アクセス権の継承

スコープは、以下のようにRBACを継承する。

サブスクリプション <--- リソース・グループ <--- リソース

  • 親スコープでロール関連付けられると、
    その親に含まれる子へのアクセス権も付与される。
  • 例えば、リソース・グループへのアクセス権を持つユーザは、
    Web サイト、仮想マシン、サブネットなど、
    リソース・グループに含まれるすべてのリソースを管理できる。

アクセス権の割当

サブスクリプションの所有者は

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

割り当て

管理機能を使用して、以下のように

ロール <--->(ユーザ <---> グループ)

ユーザ・グループに詳細なロールを割り当てる。

関連付け

管理機能を使用して、以下のように

ロール <--->(ユーザ <---> グループ)<---> スコープ

上記スコープに関連付ける。

設定例

組み込みロール

作業者用の組み込みロール

組み込みロールを使用する。

  • プラットフォーム ロール
  • リソース固有ロール

管理者用の組み込みロール

組み込みロールを使用する。

  • プラットフォーム ロール
  • リソース固有ロール

カスタム・ロール

作業者用カスタム・ロールの例

DevTest? Labs User」組込ロールを更に絞った、
「仮想マシンの起動と停止」カスタム・ロールを作成。

  • カスタム・ロールを作成
    $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の例
  • 以降のオプション
    -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",
  • SET
    >Set-AzRoleDefinition -InputFile "D:\custom_role.json"
  • 設定の反映には、アカウントの
    サインアウト → サインインが必要。

管理者用カスタム・ロールの例

  • 特定のリソース・グループに、

    仮想マシンの共同作業者
    (Virtual Machine Contributor)

の権限だけ付与する。

>New-AzRoleAssignment
  • 以下は二者択一のオプション
    ユーザを指定する
    -ObjectId <objectId>
    -SignInName <emailOrUserprincipalname>
    UPNの例
  • 以降のオプション
    -RoleDefinitionName "Virtual Machine Contributor" `
    -ResourceGroupName [既存のRG名]
  • VM作成の権限不足
    上記では権限が足りないのでポータルから追加してみる。
  • 対象のリソース・グループの[アクセス制御 (IAM)] で [追加]を押下し、
    ドロップダウンリストから[カスタム ロールの追加]を選択。
    • 前述のようなカスタム ロールの定義を入力していく。
      ・カスタム ロールの名称と説明を入力
      ・エラー メッセージを参考に権限(アクセス許可)を追加
    • [確認と作成] → [作成]ボタンを押下する。
  • 対象のリソース・グループの[アクセス制御 (IAM)] で [追加]を押下し、
    ドロップダウンリストから[ロールの割り当ての追加]を選択。
    • [役割]のドロップダウンリストから作成したカスタム ロールを選択。
    • [選択]で対象となるユーザ(若しくはグループ)を選択する。
    • [保存]ボタンを押下する(結果は[ロールの割り当て]タブから確認できる。
  • 更新は[役割]タブから行う(役割=ロールだよね...)。
    • [種類]でソートして[CustomRole?]から対象のモノを検索
    • [...]から[編集]を選択して、JSONを編集して保存する。
    • 参考情報から、実際に追加が必要になるのは以下。
      "Microsoft.Network/networkSecurityGroups/read",
      "Microsoft.Network/networkSecurityGroups/write",
      "Microsoft.Network/publicIpAddresses/write",
      "Microsoft.Network/publicIpAddresses/read",
      ※ ただし、ここでは、PublicIP追加の権限は付与しない。

ロール作成と付与のポイント

付与

  • 「サブスクリプション → リソース・グループ → リソース」のスコープがある。
  • 上位に付与した権限を下位で拒否できないので、
    最小限、許可するものダケを積み重ねていく。
    • 上位スコープには最小限の参照系の権限を付与し、
    • 下位スコープには具体的作業に必要な更新系の権限を付与する。

作成

カスタムロールに含めるロール・アクションの探し方

  • trial and error的で非効率的だが、errorからたどるのが一番確実。
  • ドキュメント系は、現時点では、まだ、完全に書かれたものは少ない。

その他

サービスの場合

Azure サービス プリンシパル

Azure Managed ID

JITロール割り当て

参考

Microsoft Docs

概要

ロールの定義

ロールの種類

ロールの割当

  • Azure RBAC
  • を使用して Azure ロールを割り当てる

操作方法ガイド

https://docs.microsoft.com/ja-jp/azure/role-based-access-control/role-definitions-list

  • ロール定義の一覧表示
  • ロールの割り当ての一覧表示
  • ロールを割り当てる
  • 条件を追加または編集する
  • ロールの割り当てを削除する
  • 拒否割当を一覧表示する
  • カスタム ロールを作成する
  • アクティビティ ログを表示する
  • アクセス権を昇格する
  • 従来の管理者
  • サブスクリプションを別のディレクトリに譲渡する
  • トラブルシューティング

その他


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


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-09-08 (水) 18:08:30 (38d)