ラージビッグバナー(970x90)

Azure

【Azure Files】ファイル共有の共有レベルのアクセス権設定をPowerShellで行う

投稿日:

ビッグバナー(piglog)728px

Azure Files で構築したファイル共有の共有レベルのアクセス権設定をPowerShellで行う手順を紹介します。

共有のアクセス権設定といっても実態はロールの割り当てです。ロール割り当ての基本的な手順やコマンドは以下でも説明していますので、このエントリでは共有のアクセス権設定に特化した内容として備忘録を残しておきます。

【Azure】ロールの割り当ての設定。PowerShellでも可能!

Azure でロールの割り当てをPowerShellで行う方法ともうちょっと頑張れば自動化できるようになるところまでを備忘録として記録します。 前置きですが、これに至る経緯として 今回 仮想デスクトッ ...

続きを見る

前提事項

前提として、ストレージアカウントをADDS認証、AzureADDS認証を有効化している前提です。有効化していない場合、アクセス制御はできません。

まだAD認証を有効化していない場合は、以下を参照してAD認証を有効化しておきましょう。

【Azure Files】ファイル共有をAD認証を有効化してアクセス権管理

Azure Files をファイルサーバ(ファイル共有)として利用する場合、アクセス権管理のためにAD(ADDS)認証、またはAzureADDS認証を利用することになると思います。 いずれかの認証を有 ...

続きを見る

また、ファイル共有を作成していない場合は、以下のエントリでPowerShellでファイル共有を作成する手順を紹介していますのでどうぞ。

Azure Files ファイル共有をPowerShellで作成。CSVで複数大量作成も可能
【Azure Files】ファイル共有をPowerShellで作成する。CSV読み込みもOK!

Azure Files のファイル共有を作成する際、ひとつふたつくらいならGUIで作成したほうが早いかもしれませんが、大量に作成するような場合はPowerShellで作成する選択肢もあるとよいですよね ...

続きを見る

ファイル共有の共有レベルのアクセス権設定をPowerShellで行う

基本の構文

基本のコマンドは以下です。

オプション

-ObjectId ユーザまたはグループ
-RoleDefinitionName ロールの名前
-Scope 割り当て先のファイル共有またはストレージアカウント

指定するオブジェクトIDやロール名、スコープの確認の方法などを説明していきます。

 

割り当てるアカウントを確認

New-AzRoleAssignmentコマンドの引数にわたす際はObjectIdとして指定するため、対象ユーザーやグループの "Id" を確認します。

  • ユーザーの場合

 

  • グループの場合

ここで確認した Id を New-AzRoleAssignment コマンドのオプション"-ObjectId"の引数に渡します。

 

ロール名を確認

以下のコマンドでロールの一覧を取得できます。そこから、ロール名に "share" を含むロールを抽出します。

ここで確認した名称をオプション"-RoleDefinitionName" の引数に渡します。

 

割り当てるスコープの確認

ストレージアカウントを取得

  • 名前でリソースを検索する場合(例として、ストレージアカウント名の前方一致で検索)

 

  • ストレージアカウントをすべて抽出する場合は、「ResourceType」を使用(CloudShell用とか他用途のストレージアカウントも出てくる)

ここで確認した ResourceId をオプション"-Scope"の引数に渡します。

 

ファイル共有を取得

以下のコマンドで、ストレージアカウントに作成されているファイル共有を確認することができます。

 

ファイル共有の詳細を確認してみる。IDも確認できるが、ロール割り当てのスコープとして指定する場合は「fileServices/default/shares/test-root1」の shares → fileshares と指定する必要があるようです。

 

ロールの割り当て

基本的な割り当てのコマンドとしては、上述の通りです。

割り当てるのがユーザーの場合はObjectIDの指定ではなく、UserPrincipalName、SignInName でも可能です。グループの場合はObjectidを取得して指定するしかなさそう。

ストレージアカウントへの割り当て

  • UserPrincipalName を指定
  • SignInNameを指定

ファイル共有への割り当て

上でも少し触れましたが、「Get-AzRmStorageShare」で確認したファイル共有のIdを直接スコープとして指定することはできず、ロール割り当てのスコープとして指定する場合は「fileServices/default/shares/sync-test1」の shares → fileshares と指定する必要があります。

Idを指定する方法はストレージアカウントのResourceIDに『/fileServices/default/fileshares/<ファイル共有名>』を付与します。

  • ストレージアカウントのResourceID
  • ファイル共有をスコープとして指定する場合以下のようになる

     

以下が実行用のコマンドとなる(スコープの値だけ変更)

 

すべての認証済み ID に対する共有レベルのアクセス許可

ここで設定したアクセス許可をAD認証されたすべてのユーザーに適用する設定(AzureADのユーザーやグループ単位ではなく)です。ですので、上記で説明した「New-AzRoleAssignment」で特定のユーザー、グループを許可するのか、ここの設定ですべてのユーザーに許可するのか、のどちらかを設定することになります。

対象となるスコープはストレージアカウントになりますのでファイル共有単位で異なる設定とすることはできず統一する必要があります。

GUI(ポータル)での設定箇所は以下の通りです。

Azure Filesの共有レベルのアクセス許可(規定)

デフォルトでは無効 Disable となっているので、必要に応じて有効化およびロールを指定します。

Azure Filesの共有レベルのアクセス許可(規定)2

コマンド実行時に指定するデフォルトパーミッションは以下となります。GUI で表示されるものと同じです。

None 無効
StorageFileDataSmbShareReader 読み取り
StorageFileDataSmbShareContributor 変更
StorageFileDataSmbShareElevatedContributor フルコントロール

上記を踏まえて、以下が実行用コマンドです。

※『Set-AzStorageAccount』コマンドを実行するためには、Az.Storage モジュールのバージョンが 3.7.0 以降である必要があるようです。

以下バージョンの環境で実行したら -DefaultSharePermission のオプションが存在しませんでした。

Azモジュールのアップデート手順は以下のエントリでまとめています。

Azure Powershell モジュールをアップデート(更新)できない
【Azure】Az PowerShell モジュールを更新(アップデート)できない

AzureFilesのパラメータを更新するために、Az.storage モジュールのバージョンをアップデートする必要があったものの、いくら『Update-Module -Name Az』を実行してもア ...

続きを見る

では。

pig-log_ディスプレイ横長

リンクユニット(レスポンシブ)

-Azure
-, ,

Copyright© ぴぐろぐ , 2024 All Rights Reserved.