Azure Files をファイルサーバ(ファイル共有)として利用する場合、アクセス権管理のためにAD(ADDS)認証、またはAzureADDS認証を利用することになると思います。
いずれかの認証を有効化することで、ドメインアカウントを利用したアクセス権の付与・管理が可能になります。今回は、AD認証を有効化して利用する場合の手順を記します。
Azure Files のAD DS認証を有効化する
AzureADDS認証を利用する場合はポータルの設定で有効化できるのですが、AD認証を利用する場合は、ストレージアカウントをドメインに参加(登録)させる処理が必要となります。その手順を説明します。
前提事項
処理を行うにあたって、アカウントや権限まわりで以下の前提事項があります。
- ターゲットADでアカウントを作成する権限をもつADアカウントが必要
※Domain Admins のグループへ所属させておけばよい - AzureADへ同期されているADアカウントで処理を行う必要がある
※↑のユーザをAzureADへ同期させておく(当然、Azure AD Connect が必要) - AzureADへ同期された↑のユーザにストレージ アカウント所有者または共同作成者の Azure ロールのアクセス許可が必要
※これら以上であればOKなので、グローバル管理者でもOK - ADに参加させるストレージアカウント名は15文字以下
※ADのオブジェクト(SamAccountName)として必須。コンピュータ名を15文字以下にするのと同じでしょうかね - ストレージアカウントのアクセス制御でSMB共有レベルのアクセス許可を追加しておく
(しておかないと処理後のステータスで failed がでる。参加処理自体は問題なかった) - AD参加処理はAD参加マシンで実行する
※↑に記載した ADでアカウント作成権限を持っていて、AzureADに同期されたアカウントでこのマシンにログインしておく - ストレージアカウントが所属するリソースグループ情報を取得できる権限をもつアカウント情報が必要
※後半で追加説明
この参加処理に時間がかかるので、条件を満たしているかちゃんと確認してからの実行をオススメします。
作業マシンの用意
処理を行うマシンの準備をします。
AD参加したWindowsであれば、サーバOSでもクライアントOSでもOKです。
- AzFilesHybrid モジュールをダウンロード
ここ>> から、AzFilesHybrid.zip をダウンロードして、作業マシンに保存します。
仮に、以下のように add_FilesToAD フォルダは作成して、その配下に保存します。
1C:\add_FilesToAD\AzFilesHybrid
次に、AzFilesHybridモジュールをインストールするための準備をします。 - .NET4.7.2インストール
※Join-AzStorageAccountForAuth.ps1 実行時に無いとエラーがでた12> .\Join-AzStorageAccountForAuth.ps1Assert-DotNetFrameworkVersion : This module/cmdlet requires at least .NET Framework4.7.2 to be installed. Please upgrade to the newest .NET Framework available.ここ>> からダウンロードしてインストールします。
※インストール後、再起動が必要 - TLS 1.2 を使えるようにする
※Win10/Win2019 は不要(TLS1.2 が有効になっている)
※Powershellモジュールをインストールする際に、PowershellGetでTLS1.2で接続する必要があるために必要
※NuGet プロバイダーのダウンロード、インストールが 2020 年 4 月以降で TLS 1.0/1.1 はサポートされず、TLS 1.2 のみをサポートする(NuGetはパッケージ管理のリポジトリのようなもの)TLSバージョン確認1[Net.ServicePointManager]::SecurityProtocol結果が「SystemDefault」であれば 1.2有効。1.0/1.1 なら、PowerShellGet モジュールを v2.2.4 以上にアップグレードする。
まず、そのPowerShellセッション内で、TLS1.2を有効にする
1[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12PowerShellGetモジュールのバージョンアップ ※2.2.4以上であればOKだが、最新はここから>> 要確認
1Install-Module PowerShellGet -RequiredVersion 2.2.5 -SkipPublisherCheckインストールされたか確認
123456Get-InstalledModuleVersion Name Repository Description------- ---- ---------- -----------1.4.7 PackageManagement PSGallery PackageManagement (a.k.a. OneGet) is ....2.2.5 ★ PowerShellGet PSGallery PowerShell module with commands for d ...信頼済みサイトの追加(サーバで行う場合や環境によっては入れておかないと接続できないかも)
123https://login.microsoftonline.comhttps://aadcdn.msftauth.nethttps://aadcdn.msauth.netブラウザでjavaを有効
1インターネットオプション >セキュリティ >レベルのカスタマイズ >Javaアプレットのスクリプト >有効にする >OK >適用
AD参加(登録)スクリプト作成
ここ>> から、スクリプトをコピーしてきます。
以下を環境に合わせて変更する
<your-subscription-id-here> | サブスクリプションID |
<resource-group-name-here> | リソースグループ(ストレージアカウントが所属する) |
<storage-account-name-here> | ストレージアカウント名 ※15文字以下 |
<ComputerAccount|ServiceLogonAccount> | 通常は ComputerAccount でOK |
<ou-distinguishedname-here> | OUを指定する(コメントアウトした場合は、てきとうなOUに追加された。規則は未確認)※ |
<AES256/RC4/AES256,RC4> | コメントアウトでOK(デフォルトはAES256,RC4) |
※ OUの指定は以下のようにきちんと書かないとだめ
1 |
"OU=Azure_Storage,DC=sd31,DC=pig-log,DC=com" |
以下が修正後の参考 ※CopyToPSPath.ps1へのパスを考慮する(★の箇所)
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 26 27 28 29 30 31 32 33 34 35 36 37 38 |
#Change the execution policy to unblock importing AzFilesHybrid.psm1 module Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser # Navigate to where AzFilesHybrid is unzipped and stored and run to copy the files into your path cd C:\add_FilesToAD\AzFilesHybrid ★ .\CopyToPSPath.ps1 #Import AzFilesHybrid module Import-Module -Name AzFilesHybrid #Login with an Azure AD credential that has either storage account owner or contributer Azure role assignment Connect-AzAccount #Define parameters $SubscriptionId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx" $ResourceGroupName = "rg1-office1" $StorageAccountName = "strpfc1" #Select the target subscription for the current session Select-AzSubscription -SubscriptionId $SubscriptionId # Register the target storage account with your active directory environment under the target OU (for example: specify the OU with Name as "UserAccounts" or DistinguishedName as "OU=UserAccounts,DC=CONTOSO,DC=COM"). # You can use to this PowerShell cmdlet: Get-ADOrganizationalUnit to find the Name and DistinguishedName of your target OU. If you are using the OU Name, specify it with -OrganizationalUnitName as shown below. If you are using the OU DistinguishedName, you can set it with -OrganizationalUnitDistinguishedName. You can choose to provide one of the two names to specify the target OU. # You can choose to create the identity that represents the storage account as either a Service Logon Account or Computer Account (default parameter value), depends on the AD permission you have and preference. # Run Get-Help Join-AzStorageAccountForAuth for more details on this cmdlet. Join-AzStorageAccountForAuth ` -ResourceGroupName $ResourceGroupName ` -StorageAccountName $StorageAccountName ` -DomainAccountType "ComputerAccount" <# Default is set as ComputerAccount #> ` -OrganizationalUnitDistinguishedName "OU=Azure_Storage,DC=sd31,DC=pig-log,DC=com" <# If you don't provide the OU name as an input parameter, the AD identity that represents the storage account is created under the root directory. #> ` #-EncryptionType "<AES256/RC4/AES256,RC4>" <# Specify the encryption agorithm used for Kerberos authentication. Default is configured as "'RC4','AES256'" which supports both 'RC4' and 'AES256' encryption. #> #Run the command below if you want to enable AES 256 authentication. If you plan to use RC4, you can skip this step. Update-AzStorageAccountAuthForAES256 -ResourceGroupName $ResourceGroupName -StorageAccountName $StorageAccountName #You can run the Debug-AzStorageAccountAuth cmdlet to conduct a set of basic checks on your AD configuration with the logged on AD user. This cmdlet is supported on AzFilesHybrid v0.1.2+ version. For more details on the checks performed in this cmdlet, see Azure Files Windows troubleshooting guide. Debug-AzStorageAccountAuth -StorageAccountName $StorageAccountName -ResourceGroupName $ResourceGroupName -Verbose |
スクリプト実行
編集したスクリプトを実行しますが、その前に
- 前提事項の権限周りの条件は満たしているか
- ストレージアカウントの設定で許可する接続元を制限していないか
を確認しましょう。
おすすめのやり方としては、
アクセス権の条件を満たしていないと、エラーがでずに処理が進まない場合があります。これ結構やっかい(処理が進んでいるのか止まっているのかわからない)なので、デバッグを出して実行するとよいです。
1 |
Set-PSDebug -trace 1 |
また、スクリプト内でAzureポータルに接続するので、先行して接続しておくとスムーズです。
※ここで接続するアカウントは、スクリプトに記載したリソースグループの情報を取得できるアカウントである必要があります(前提事項の7番の件)
1 |
Connect-AzAccount |
Powershellモジュールを大量にインストールするので、結構時間がかかります。環境にもよると思いますが20分くらいかかったかも。気長に待ちましょう。Connect-AzAccount のところで進まない場合は、やり直したほうがよいかもです。
無事に参加処理が終われば、以下のように結果が表示されます。
1 2 3 4 5 6 7 8 9 10 11 12 |
Name Result ---- ------ CheckDomainJoined Passed CheckGetKerberosTicket Passed CheckUserRbacAssignment Passed CheckAadUserHasSid Skipped CheckADObjectPasswordIsCorrect Passed CheckADObject Passed CheckUserFileAccess Skipped CheckPort445Connectivity Passed CheckStorageAccountDomainJoined Passed CheckSidHasAadUser Passed |
GUI からも以下のように確認できます。
ADのユーザーとコンピュータの一覧から
ストレージアカウントの「構成」のページから
ファイル共有のページから
共有レベルのアクセス許可設定
ファイル共有を作成したら、ファイル共有の アクセス制御(IAM)を開くとアクセス権を設定できるようになっています。(ストレージアカウントではなく「ファイル共有」のアクセス制御です)
ここは、ADDS または AzureADDS 認証を有効化していない状態だと設定できません。
画像が取れていませんが、画面上部の「+追加」から、役割と許可するユーザ/グループを設定します。グループで設定するのが一般的かと思います。役割は以下の通りです。
フルコントロール | ストレージファイルデータのSMB共有の管理者特権の共同作成者 |
変更 | 記憶域ファイルデータのSMB共有の共同作成者 |
読み取りのみ | 記憶域ファイルデータのSMB共有の閲覧者 |
また、共有のアクセス権設定をPowerShellで行う手順を以下のエントリで説明しています。
-
【Azure Files】ファイル共有の共有レベルのアクセス権設定をPowerShellで行う
Azure Files で構築したファイル共有の共有レベルのアクセス権設定をPowerShellで行う手順を紹介します。 共有のアクセス権設定といっても実態はロールの割り当てです。ロール割り当ての基本 ...
ここまできたらAzure側での設定は終わりです。PC側で ネットワークドライブとしてマウントして、セキュリティ設定(NTFSアクセス権設定)を行いましょう。
まとめ
Azure Files をADDS認証を有効化する手順を説明しました。これで、ADのアカウントを利用して 従来のNTFSアクセス権管理が可能なファイル共有を Azure Files で利用することができるようになりました。
もちろん、AzureADDS を利用するでも良いですが、既存のAD環境を流用できれば、追加コスト不要でオンプレミスのファイルサーバをクラウドへ移行できるのではないでしょうか。
今回説明したAD有効化の処理が正常に完了しない/エラーで止まってしまう場合の確認のポイントを以下にまとめています。
-
【Azure Files】AD参加(AD認証の有効化)が失敗するときの確認ポイント
Azure Files をAD認証を有効化して利用することで、従来のWindows Serverで運用してきたファイルサーバと同じようにファイル(NTFS)のアクセス権管理をクラウドでも同じように行う ...