Auth0 Deploy CLI Toolでのテナント設定移行方法(export/import)
概要
Auth0を使用する際、複数のテナントの作成やテナント設定のバックアップなど、テナント設定のコピーペースト作業にはDeploy CLI Toolが公式的に推奨され、よく使われます。
Deploy CLI Toolは非常に便利なので、このツールでAuth0のテナント設定コピー(export
)とペースト(import
)の手順を紹介したいと思います。
環境準備
このブログに使った端末は M1 / MacOS Monterey 12.1
。
Deploy CLI Toolのインストールには、事前nodejsとnpmのインストールが必要です。
コマンドツールで(こちらはTerminal
)で下記のコマンドでDeploy CLI Toolがインストールされます。
npm i -g auth0-deploy-cli
テナント設定 export
CLIツール用アプリの作成
export
元のテナントのダッシュボードに入って、新しいcli
ツール用のApplication
を作ります:
- Application名は
auth0-deploy-cli-extension
- Application Typeは
Machine to Machine
Create
を押してから、Authorize Machine to Machine ApplicationページにAuth0 Management API
のAll
で、全ての権限をAuthorize
でこのアプリに付与します。
export用config.json設定ファイルの作成
既にAuth0をログインして、export
元を選択した場合は、Configure the Deploy CLI Tool このリンクにconfig.json
のテンプレートができてます。 そのテンプレートで好きなパスにconfig.json
ファイルを作成してもらって、さっき作ったauth0-deploy-cli-extension
アプリのClient Secret
をコピーし、YOUR_CLIENT_SECRET
に書き換えます。
CLIツールでexportの実行
コマンドツール(Terminal)で用意したconfig.json
のパスに入ります。
そのパスに下記のコマンド実行します(exportされるYAMLファイルが同じパス保存する)
a0deploy export --config_file config.json --format yaml --output_folder ./
logはこういう感じ:
2022-02-26T10:28:12.269Z - info: Loading Auth0 Tenant Data 2022-02-26T10:28:12.270Z - info: Retrieving rules data from Auth0 2022-02-26T10:28:12.597Z - info: Retrieving rulesConfigs data from Auth0 2022-02-26T10:28:13.268Z - info: Retrieving hooks data from Auth0 guardianFactorProviders 2022-02-26T10:28:36.734Z - info: Exporting guardianFactorTemplates // ...省略 2022-02-26T10:28:36.735Z - info: Exporting organizations 2022-02-26T10:28:36.735Z - info: Exporting triggers 2022-02-26T10:28:36.740Z - info: Writing tenant.yaml 2022-02-26T10:28:36.742Z - info: Export Successful
これでtenant.yaml
が出来ます。
テナント設定 import
CLIツール用アプリの作成
import
先のテナントのダッシュボードに入って、新しいcli
ツール用のApplication
を作ります(手順は同じ):
- Application名は
auth0-deploy-cli-extension
- Application Typeは
Machine to Machine
Create
を押してから、Authorize Machine to Machine ApplicationページにAuth0 Management API
のAll
で、全ての権限をAuthorize
でこのアプリに付与します。
import用config-import.jsonの作成
import用config
ファイルはexport用のと違います。
{ "AUTH0_DOMAIN": "<YOUR_TENANT>.auth0.com", "AUTH0_CLIENT_ID": "<client_id>", "AUTH0_CLIENT_SECRET": "<client_secret>", "AUTH0_KEYWORD_REPLACE_MAPPINGS": { "AUTH0_TENANT_NAME": "<NAME>", "ENV": "DEV" }, "AUTH0_ALLOW_DELETE": false, "AUTH0_EXCLUDED_RULES": [ "rule-1-name", "rule-2-name" ], "INCLUDED_PROPS": { "clients": [ "client_secret" ] }, "EXCLUDED_PROPS": { "connections": [ "options.client_secret" ] } }
このテンプレートにimport先のauth0-deploy-cli-extension
アプリ情報を入力します。必要な項目は:
AUTH0_DOMAIN
AUTH0_CLIENT_ID
AUTH0_CLIENT_SECRET
AUTH0_TENANT_NAME
ファイル名をconfig-import.json
にし、さっき生成されたtenant.yaml
と同じパスに保存します。
CLIツールでimportの実行
コマンドツール(Terminal)で用意したconfig-import.json
とtenant.yaml
のパスに入ります。
そのパスに下記のコマンド実行します。
a0deploy import --config_file config-import.json --input_file tenant.yaml
logはこういう感じ:
2022-02-26T12:52:45.764Z - info: Getting access token for 5W6tEpYGirhk9ECCbPH26cyWeWqkBEYL/tenant-b-to-import.jp.auth0.com 2022-02-26T12:52:47.721Z - info: Created [clients]: {"name":"app-to-export","client_id":"0Q4g0cotgYvqMmHu3M4a2a1A8QkNSs3N"} 2022-02-26T12:52:47.856Z - info: Updated [clients]: {"name":"Default App","client_id":"nBfLd8XHChMWke0GYTiRV9cNLePGfPjN"} 2022-02-26T12:52:48.026Z - info: Updated [guardianFactors]: {"name":"email"} 2022-02-26T12:52:48.028Z - info: Updated [guardianFactors]: {"name":"push-notification"} 2022-02-26T12:52:48.029Z - info: Updated [guardianFactors]: {"name":"webauthn-roaming"} 2022-02-26T12:52:48.036Z - info: Updated [guardianFactors]: {"name":"sms"} 2022-02-26T12:52:48.037Z - info: Updated [guardianFactors]: {"name":"webauthn-platform"} //...省略 2022-02-26T12:53:01.663Z - info: Updated [migrations]: {"issue_opaque_access_tokens":true} 2022-02-26T12:53:01.664Z - info: Import Successful
info: Import Successful
が表示されたら設定移行が無事に終わります。
注意点
auth0-deploy-cli
ツールはよくバージョンアップされるので、最新版を使ってください。-
最初
export
は基本的に問題ないですが、import
の場合は一部項目がエラーが出るかもしれません。(例えばlogo_url
が設定されない場合、フォーマットエラーが出る)
その時は、エラーの項目をtenant.yaml
に消せばエラーがなくなり、手動で消した項目はimport
完了後またダッシュボードで設定できます。 -
一部の設定項目はこの方法で(
Auth0 Management API
+auth0-deploy-cli
)移行できません。具体の項目はAuth0 Deploy CLI Githubに確認してください。
以上です。