はじめに
前回の記事でAuth0のテナント設定をExportしてみたので今回はImportをやってみました。
設定ファイルの準備
前回と同様にauth0-deploy-cliの設定ファイルを用意します。
{
"AUTH0_DOMAIN": "{テナントドメイン}",
"AUTH0_CLIENT_ID": "{クライアントID}",
"AUTH0_CLIENT_SECRET": "{クライアントシークレット}",
"AUTH0_ALLOW_DELETE": false
}
今回は新たにAUTH0_ALLOW_DELETEという項目を足しています。
この項目については後で紹介します。
Importする設定ファイルの準備
Importするテナント設定ファイルはjson形式とYAML形式のどちらも扱えますが今回はYAML形式のテナント設定ファイルで試してみます。
一度既存のテナント設定をExportしてからテナント設定を編集するとやりやすいです。
今回はテナント設定ファイル(tenant.yaml)にtestAppとい名前のclient(アプリケーション)を追加してImportします。
...
clients:
- name: testApp
app_type: regular_web
cross_origin_auth: false
custom_login_page_on: true
grant_types:
- authorization_code
- refresh_token
is_first_party: true
is_token_endpoint_ip_header_trusted: false
jwt_configuration:
alg: RS256
lifetime_in_seconds: 36000
secret_encoded: false
oidc_conformant: true
sso_disabled: false
...
databases:
- name: Username-Password-Authentication
strategy: auth0
enabled_clients:
- testApp
- auth0-deploy-cli-extension
is_domain_connection: false
options:
mfa:
active: true
return_enroll_settings: true
passwordPolicy: good
strategy_version: 2
brute_force_protection: true
realms:
- Username-Password-Authentication
...
テナント設定のImport
以下のコマンドを入力するとtenant.yamlの内容がAuth0のテナント設定に反映されます。
a0deploy deploy -c config.json -i path/to/tenant.yaml
-
-cのあとに、config.jsonの保存場所を指定します。 -
-oのあとに、Importするtenant.yamlの保存場所を指定します。
テナント設定の削除
auth0-deploy-cliに読み込ませるconfig.jsonの設定内容によってはtenant.yamlファイルから設定の一部(client等)を削除した状態でImportを行うと、Auth0のテナント設定にも削除した状態を反映できます。
本記事の最初に記載したconfig.jsonのAUTH0_ALLOW_DELETEの値によって削除状態を反映する、しないを制御できます。
今用意しているconfig.jsonのようにAUTH0_ALLOW_DELETEがfalseだと設定の削除は反映されません。
反対にAUTH0_ALLOW_DELETEがtrueだと設定の削除が反映されます。
試しにAUTH0_ALLOW_DELETEをfalseのままに、先ほどImportで登録したtestAppの設定内容をtenant.yamlから削除して、再度Importしてみます。
すると、以下のような警告が表示され、testAppはAuth0のテナントに残ったままになります。
warn: Detected the following clients should be deleted. Doing so may be destructive.
You can enable deletes by setting 'AUTH0_ALLOW_DELETE' to true in the config
{"name":"testApp","client_id":"..."}
config.jsonのAUTH0_ALLOW_DELETEをtrueに変更してから再度Importを行うとtestAppはAuth0のテナントから削除されてしまいます。
意図しない削除が行われないようにconfig.jsonの設定を確認するようにしましょう。
テナント設定で変数を使う
Auth0のテナントを複数運用していると、各テナントでアプリケーションのcallback_url等に設定しているドメインは違うけど、他の設定は大体同じ。となっていることがあると思います。
テナント設定ファイルには変数を設定することができるので、こういった場合も1つのテナント設定ファイルで複数のテナント設定を管理することが可能になります。
テナント設定ファイルに以下の構文を差し込むことで変数を設定することができます。
-
@@key@@で固定値を設定 -
##key##で設定値の文字列を一部置換
試しにcallback_urlのドメインとid_tokenの有効期限を変数化してみます。
clients:
- name: testApp
callbacks:
- 'https://##ENVIRONMENT_DOMAIN##/callback'
...
jwt_configuration:
alg: RS256
lifetime_in_seconds: @@JWT_TIMEOUT@@
secret_encoded: false
...
変数の値はconfig.jsonから注入することができます。
AUTH0_KEYWORD_REPLACE_MAPPINGSというパラメーターを追加し変数の値を指定します。
{
"AUTH0_DOMAIN": "{テナントドメイン}",
"AUTH0_CLIENT_ID": "{クライアントID}",
"AUTH0_CLIENT_SECRET": "{クライアントシークレット}",
"AUTH0_ALLOW_DELETE": false,
"AUTH0_KEYWORD_REPLACE_MAPPINGS": {
"ENVIRONMENT_DOMAIN": "example.com",
"JWT_TIMEOUT": 120
}
}
この状態でテナント設定のImportを行うと、以下のように設定が反映されます。
config.jsonをテナントごとに用意しておけば同じ1つのテナント設定ファイルを使いまわして複数テナントの設定内容を管理することが可能です。
おわりに
auth0-deploy-cliのImport機能は変数が使えるので、複数テナントの管理でも便利に使うことができます。
毎回GUIで各テナントに設定を反映するよりも厳密な設定内容の管理が行えるのでぜひ利用してみてください。

