Azure Files にオンプレのファイルサーバデータを同期する方法のひとつとして Azure File Syncがあり、この Azure File Sync を使用してデータ同期すると Active Directory のアクセス権も同期してくれますが、Administrators の権限だけはうまく同期してくれなかったので備忘録として残しておきます。
Administratorsの権限はうまく同期してくれない
オンプレ(同期元)の環境で、アクセス権『DOMAIN\Administrators 』を使用している場合、同期先の Azure Files 側でのアクセス権は『ストレージアカウント\Administartors 』に置き換わってしまいます。
Azure Files はPaaSの位置付けの製品なので、この『ストレージアカウント\Administartors 』なるグループアカウントは使用できるものではないはずです。そして、実際に『DOMAIN\Administrators 』に所属するユーザーで同期先(Azure Files)のフォルダへアクセスしようとすると権限不足でアクセスできないという状況です。ちなみに、ストレージアカウントキーで接続した場合のアカウントは『SYSTEM』として認識されます。
これはまずいということで、同期元のフォルダに設定されているすべての『DOMAIN\Administrators 』を別のなにかに置き換えねばなりません。
対処方針
ぴぐろぐの環境では、同期元に設定されていた『 DOMAIN\Administrators 』をすべて『 DOMAIN\Domain Admins 』に置き換えました。
なにに置き換えるかは環境によって好ましいものを選択すれば良いと思いますが、オンプレミスファイルサーバから同期しているので、あくまで 同期元のファイルサーバで変更する必要があります。
対処内容
地道にアクセス権(NTFS)を変更していくしかありませんが、GUIではいつまでたっても終わらないフォルダ数でしたので、スクリプトを用意しました。
処理の内容としては、各フォルダにて以下の2点を実施するです。処理の前後で、ログを残すくらいはやっています。
- 『 DOMAIN\Domain Admins 』を追加(+アクセス権(※)を指定)
- 『 DOMAIN\Administrators 』を削除
※以下のスクリプトではフルコントロール許可を指定します。読み取り専用や書き込みまで、変更までとしたい場合は、GUIで設定したうえで、icacls コマンドで権限を確認してみると、どのように指定すればよいのかわかります。
注意点は追加してから削除すること。先に削除してしまうと、権限設定が重複して設定されていない限りアクセスできなくなってしまうので。
使用したコマンドは『 icacls 』です。
スクリプトは以下に記載しています。使用方法としては、権限設定を変更したいフォルダ群の親フォルダパスを引数に渡して実行します。実行すると、指定したフォルダ配下の各フォルダのアクセス権を上記の通り変更します。単純にforeachで回しているだけなので、既存設定(administratorsが許可されているか否か等)の確認をしてスキップするなどの分岐は行いません。
継承が有効化されているフォルダでは、継承元のフォルダで変更すればよいだけです。あくまで、継承が無効化されたフォルダに対しての作業用ということになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# ログフォルダ $log_dir = "E:\temp\chg_acl\result" # ターゲットフォルダ配下のフォルダに対してループ処理 $target_dir = $Args[0] $target_dirs = ls $target_dir $target_dirs = $target_dirs.fullname foreach ( $target in $target_dirs ){ #フォルダ名取得(ログファイル名用) $dir_name = Split-Path $target -Leaf #check before icacls $target | Out-File $log_dir\${dir_name}_1.txt # change icacls $target /grant "hogedomain\Domain admins:(OI)(CI)(F)" icacls $target /remove:g "BUILTIN\Administrators" #check after icacls $target | Out-File $log_dir\${dir_name}_2.txt } |
以上です。