Azure Files をAD認証を有効化して利用することで、従来のWindows Serverで運用してきたファイルサーバと同じようにファイル(NTFS)のアクセス権管理をクラウドでも同じように行うことができます。
今回は、Azure Files のAD認証を有効化する際の処理が失敗する場合の確認ポイントをまとめておきます。
AD認証を有効化する手順は以下にまとめています。
-
【Azure Files】ファイル共有をAD認証を有効化してアクセス権管理
Azure Files をファイルサーバ(ファイル共有)として利用する場合、アクセス権管理のためにAD(ADDS)認証、またはAzureADDS認証を利用することになると思います。 いずれかの認証を有 ...
確認ポイント
.NET Framework4.7.2 が必要のエラー
Join-AzStorageAccountForAuth.ps1 実行時に、.NET 4.7.2以上が必要のようです
1 2 |
> .\Join-AzStorageAccountForAuth.ps1 Assert-DotNetFrameworkVersion : This module/cmdlet requires at least .NET Framework4.7.2 to be installed. Please upgrade to the newest .NET Framework available. |
こちら>> からダウンロードしてインストールします。
インストール後、再起動が必要になります。
確認コマンドは以下です。
1 2 3 4 5 6 7 8 9 10 11 12 |
PS> Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' -recurse | Get-ItemProperty -name Version,Release -EA 0 | Where { $_.PSChildName -match '^(?!S)\p{L}'} | Select PSChildName, Version, Release PSChildName Version Release ----------- ------- ------- v2.0.50727 2.0.50727.4927 v3.0 3.0.30729.4926 Windows Communication Foundation 3.0.4506.4926 Windows Presentation Foundation 3.0.6920.4902 v3.5 3.5.30729.4926 Client 4.8.04084 528372 Full 4.8.04084 528372 Client 4.0.0.0 |
NuGetプロバイダーインストール時にインターネット接続できないエラー
1 2 3 4 5 6 7 8 9 10 |
続行するには NuGet プロバイダーが必要です PowerShellGet で NuGet ベースのリポジトリを操作するには、'2.8.5.201' 以降のバージョンの NuGet プロバイダーが必要です。 NuGet プロバイダーは 'C:\Program Files\PackageManagement\ProviderAssemblies' または 'C:\Users\sys-adm2\AppData\Local\PackageManagement\ProviderAssemblies' に配置する必要があります 'Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force' を実行して NuGetプロバイダーをインストールすることもできます。 今すぐ PowerShellGet で NuGet プロバイダーをインストールしてインポートしますか? [Y] はい(Y) [N] いいえ(N) [S] 中断(S) [?] ヘルプ (既定値は "Y"): y 警告: URI 'https://go.microsoft.com/fwlink/?LinkID=627338&clcid=0x409' から '' へダウンロードできません。 警告: 利用可能なプロバイダーの一覧をダウンロードできません。インターネット接続を確認してください。 |
NuGet プロバイダーのダウンロード、インストールが 2020 年 4 月以降で TLS 1.0/1.1 はサポートされず、TLS 1.2 のみをサポートするようになったとのこと。※NuGetとは、パッケージ管理のリポジトリのようなもの
Windows Server 2019とWindows10はデフォルトでTLS1.2が有効のため、問題なしです。
対処
まず、TLSのバージョンを確認します。
1 2 |
PS C:\Users\Administrator> [Net.ServicePointManager]::SecurityProtocol Ssl3, Tls |
ちなみに↑のコマンド結果が「SystemDefault」と出力された場合は、TLS1.2 が有効になっています。
やりかたは大きく2つあります。
- Windows PowerShell のセッション内でのみ、 TLS 1.2 に設定する
1PS> [Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bOR [Net.SecurityProtocolType]::Tls12
※ スクリプト実行時に、結局PowerShellGet 1.6.0以降が必要と言われてアップデートすることになるので、やっぱり以下でやったほうがよい - PowerShellGet モジュールを v2.2.4 以上にアップグレード
12PS> [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12PS> Install-Module PowerShellGet -RequiredVersion 2.2.5 -SkipPublisherCheck
※バージョンは2.2.4以上であればOKだが、最新はここから>> 要確認
TLSバージョン確認
1 2 |
PS C:\Users\Administrator> [Net.ServicePointManager]::SecurityProtocol Tls12 |
ストレージアカウント名の文字数オーバー
以下のエラーがでた場合は、ストレージアカウントの文字数が15文字以上となっていることでエラーとなっています。
1 2 3 4 |
Join-AzStorageAccountForAuth : Parameter -StorageAccountName 'filespiglog00001' has more than 15 characters, which is n ot supported to be used as the SamAccountName to create an Active Directory object for the storage account. Azure Files will be supporting AES256 encryption for Kerberos tickets, which requires that the SamAccountName match the storage ac count name. Please consider using a storage account with a shorter name. |
そもそも、ADに参加させるためにやっているので、コンピュータアカウントと同じように ADのオブジェクト( SamAccountName )として15文字以下が必須。なのは、知ってはいたものの考慮せずにここまで来てしまうと、ここでこのエラーですかい orz となります。
ここまできてストレージアカウントの作成からやり直しは結構なえます。
よくよく見返してみると、スクリプトにはコメントがありました。そんなとこまでいちいち読まねぇよっ
1 |
# Define parameters, $StorageAccountName currently has a maximum limit of 15 characters |
できれば前提条件として、明記してほしい。。。
リソースグループを取得できない
1 2 3 |
Get-AzResourceGroup : 23:38:12 - Provided resource group does not exist. 発生場所 行:1 文字:1 + Get-AzResourceGroup -Name "rg001_ad_ds" |
Connect-AzAccount で接続するアカウントのロールはちゃんと確認しておきましょうという話です。
もちろんグローバル管理者のロールを割り当てていればOKです。
AD参加させるスクリプトを実行する前に、Powershell で Connect-AzAccount したうえで、ストレージアカウントが所属するリソースグループ情報を取得できるか実際にやってみるのが確実です。
1 |
PS> Get-AzResourceGroup -Name "rg001_ad_ds" |
とりあえず処理が通れば良い!という場合は、ポータルにログインする際のアカウントを使用すればOKです。
AzureADDS 認証が有効になっている
1 2 |
Set-AzStorageAccount : The Storage account already enabled AzureActiveDirectoryDomainServicesForFile, please disable it by run this cmdlets with "-EnableAzureActiveDirectoryDomainServicesForFile $false" before enable ActiveDirectoryDomainServicesForFile. 発生場所 C:\Users\Administrator\Documents\WindowsPowerShell\Modules\AzFilesHybrid\0.2.2.0\AzFilesHybrid.psm1:3563 文字:9 |
和訳)
Set-AzStorageAccount:ストレージアカウントはすでにAzureActiveDirectoryDomainServicesForFileを有効にしています。
ActiveDirectoryDomainServicesForFileを有効にする前に、「-EnableAzureActiveDirectoryDomainServicesForFile $ false」を指定してこのコマンドレットを実行し、無効にしてください。
AzureADDS認証 か ADDS認証のいずれかしか有効にはできません。
この環境では、AADDS認証のテストをしたあとに、同じストレージアカウントを使用して、ADDS認証を有効化しようとしてしまったという状況です。もし有効にしている場合は無効にしておきましょう。
まとめ
いかがでしたでしょうか。
我ながら割とハマったな、、という印象です。。。MSの公開情報をちゃんと読んでいれば事前に回避できることもあったな、というのと、カンの良い人であれば、事前に気づけることも多いかもしれません。
ま、ここにわたしのやらかした内容を残しておくことで、困っている人の助けになれば幸いでございます。
では!
↓↓↓ Azureの入門資格取るなら ↓↓↓