Auth0 Deploy CLI Toolでのテナント設定移行方法(export/import)

Auth0テナント設定の移行方法(CLIツール)

概要

Auth0を使用する際、複数のテナントの作成やテナント設定のバックアップなど、テナント設定のコピーペースト作業にはDeploy CLI Toolが公式的に推奨され、よく使われます。

Deploy CLI Toolは非常に便利なので、このツールでAuth0のテナント設定コピー(export)とペースト(import)の手順を紹介したいと思います。

環境準備

このブログに使った端末は M1 / MacOS Monterey 12.1

Deploy CLI Toolのインストールには、事前nodejsnpmのインストールが必要です。

コマンドツールで(こちらは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 APIAllで、全ての権限を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 APIAllで、全ての権限をAuthorizeでこのアプリに付与します。

import用config-import.jsonの作成

import用configファイルはexport用のと違います。

Import tenant configuration

{
    "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.jsontenant.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に確認してください。

以上です。