本記事について
サブスクリプションやロールに対する権限がないユーザーでドメインを取得しようとした際、何度もつまづいたので備忘録として残しておく。
結論
- リソースプロバイダー
Microsoft.DomainRegistration
を登録する - カスタムロールを作成し、以下権限を許可して対象ユーザーに割り当てる
Microsoft.DomainRegistration/domains/providers/locks/write
Microsoft.DomainRegistration/domains/write
Microsoft.Network/dnszones/providers/locks/write
Microsoft.Network/dnszones/write
Microsoft.DomainRegistration/checkDomainAvailability/action
- Azure CLI で実行する (
az appservice domain create
)
試行錯誤の足跡
まずは、Azure Portal でドメイン取得を試みた。
App Service ドメイン にアクセスして項目を入力中、エラー発生。
リソースプロバイダー Microsoft.DomainRegistration はサブスクリプション XXXX に登録されておらず、サブスクリプション XXXX のリソースプロバイダーを登録するためのアクセス許可がありません
以下リソースプロバイダーの登録をサブスクリプション管理者に依頼し、解決。
Microsoft.DomainRegistration
具体的な手順は以下参考
改めて Azure Portal に戻り、項目を入力中、再度別のエラーが発生。
次のアクセス許可
(Microsoft.DomainRegistration/domains/providers/locks/write,
Microsoft.DomainRegistration/domains/write,
Microsoft.Network/dnszones/providers/locks/write,
Microsoft.Network/dnszones/write)がすべてないと、このサブスクリプション内にリソースを作成できません
必要な権限を割り当ててもらうため、以下で対象となる組み込みロールを探した。
しかし Microsoft.DomainRegistration
に対応する組み込みロールが見つからなかったので、以下を依頼した。
- カスタムロールの作成
- 以下権限を許可
Microsoft.DomainRegistration/domains/providers/locks/write
Microsoft.DomainRegistration/domains/write
Microsoft.Network/dnszones/providers/locks/write
Microsoft.Network/dnszones/write
- ユーザーへの割り当て
具体的な手順は以下参考
これで Azure Portal 上のエラーは解消。
必要な内容を入力していくが、ドメインを指定する部分の挙動がどうもおかしい。
具体的には、空きドメインを指定しても以下の警告が出る。
このドメインは使用できません。使用可能な類似のドメインをいくつかこちらに表示します。
下部に提示されたドメインを直接入力しても、なぜか警告は消えない。
仕方なく使用できるドメイン
から選択してチェックボックスを入れ、次に進む。
連絡先情報、詳細、タグを入力し、確認および作成に移るも、
検証中
という表示のまま動かない。
以前 Azure Portal だと設定が行えなかったが、Azure CLI なら問題なく行えたケースがあったので、今回も試してみることに。
上記記事中のリンクを参考に、contact_info.json
を作成して、以下コマンドを実行。
az appservice domain create --contact-info=@contact_info.json \
--hostname <取得したいドメイン> \
--resource-group <リソースグループ名> \
--accept-terms \
--tags <キー>=<バリュー>
すると、以下エラーが発生。
(AuthorizationFailed) The client 'xxxxxx' with object id 'xxxxxx' does not have authorization to perform action 'Microsoft.DomainRegistration/checkDomainAvailability/action' over scope '/subscriptions/xxxxxx' or the scope is invalid. If access was recently granted, please refresh your credentials.
Code: AuthorizationFailed
Message: The client 'xxxxxx' with object id 'xxxxxx' does not have authorization to perform action 'Microsoft.DomainRegistration/checkDomainAvailability/action' over scope '/subscriptions/xxxxxx' or the scope is invalid. If access was recently granted, please refresh your credentials.
どうやら、必要な権限がまだ不足していた様子。
Microsoft.DomainRegistration/checkDomainAvailability/action
をカスタムロールで追加設定してもらうよう依頼。
完了後、再度コマンドを実行することで、ついにドメインを取得することができた!
ちなみに Azure CLI から取得できたドメインは、(権限付与された後でも) Azure Portal 上では このドメインは使用できません
と警告されて指定できなかった。
上記挙動から、現時点でドメイン取得を考える際には Azure CLI のほうが良さそう。
最後に
可能なら強い権限を持ったユーザーで実施することを勧めます。
参考