bin/kc.[sh|bat] start --bootstrap-admin-username tmpadm --bootstrap-admin-password pass
以下のいずれかの方法で作成されたユーザーまたはサービス管理者アカウントは**一時的なもの**です。これは、アカウントが永続的でより安全な管理者アクセスを取得するために必要な操作を実行するために必要な期間のみ存在すべきであることを意味します。その後、アカウントは手動で削除する必要があります。管理コンソールの警告バナー、ラベル、ログメッセージなど、さまざまなUI/UX要素は、アカウントが一時的なものであることをKeycloak管理者に示します。
Keycloakのstart
およびstart-dev
コマンドは、一時的な管理者ユーザーと管理者サービスアカウントの両方をブートストラップするためのオプションをサポートしています。これらのオプションは標準の構成オプションであるため、環境変数やCLIパラメーターなどの構成ソースのいずれかで指定できます。たとえば、次の例は、CLIパラメーター付きのstart
およびstart-dev
コマンドを使用して、一時的な管理者ユーザーと管理者サービスアカウントをそれぞれブートストラップする方法を示しています。
bin/kc.[sh|bat] start --bootstrap-admin-username tmpadm --bootstrap-admin-password pass
bin/kc.[sh|bat] start-dev --bootstrap-admin-client-id tmpadm --bootstrap-admin-client-secret secret
ユーザー名またはクライアントIDの値は省略できます。詳細については、以下の「デフォルト値」セクションを参照してください。
これらのオプションの目的は、一時的な管理者アカウントをブートストラップすることのみです。これらのアカウントは、マスターレルムがまだ存在しないKeycloakサーバーの最初の起動時にのみ作成されます。アカウントは常にマスターレルムに作成されます。管理者アクセスを回復するには、以下のセクションで説明されている専用コマンドを使用してください。
bootstrap-admin
コマンドは、Keycloakの最初の起動前でも実行できます。このコマンドを使用する前に、すべてのKeycloakノードを停止する必要があることに注意してください。その実行は初期マスターレルムの作成をトリガーし、その結果、サーバーが初めて起動されるときに、管理者ユーザーとサービスアカウントをブートストラップするための起動オプションは後で無視されます。
さらに、Keycloakサーバーが起動されるのと同じオプション(例:db
オプション)で専用コマンドを使用することを強くお勧めします。
Keycloakの構成で概説されているように、build
コマンドで最適化されたバージョンのKeycloakを構築した場合、--optimized
コマンドラインオプションを使用して、Keycloakにビルドチェックをスキップさせて起動時間を短縮します。これを行う場合は、コマンドラインからビルド時間オプションを削除し、ランタイムオプションのみを保持してください。
--optimized を使用しない場合、bootstrap-admin コマンドは暗黙的に最適化されたイメージを作成または更新することに注意してください。サーバーインスタンスと同じマシンからコマンドを実行している場合、これはサーバーの次回の起動に影響を与える可能性があります。 |
一時的な管理者ユーザーを作成するには、次のコマンドを実行します。
bin/kc.[sh|bat] bootstrap-admin user
他のパラメーターが指定されていない場合、または対応する環境変数が設定されていない場合、必要な情報を入力するように求められます。ユーザー名の値は、デフォルト値を使用するために省略できます。詳細については、以下の「デフォルト値」および「環境変数」セクションを参照してください。
または、パラメーターをコマンドで直接指定することもできます。
bin/kc.[sh|bat] bootstrap-admin user --username tmpadm --password:env PASS_VAR
このコマンドは、ユーザー名tmpadm
と環境変数から取得したパスワードを持つ一時的な管理者ユーザーを作成します。
自動化されたシナリオでは、一時的な管理者サービスアカウントは、一時的な管理者ユーザーよりも適切な代替手段となる場合があります。
一時的な管理者サービスアカウントを作成するには、次のコマンドを実行します。
bin/kc.[sh|bat] bootstrap-admin service
同様に、対応する環境変数または追加のパラメーターが設定されていない場合、必要な情報を入力するように求められます。クライアントIDの値は、デフォルト値を使用するために省略できます。詳細については、以下の「デフォルト値」および「環境変数」セクションを参照してください。
または、パラメーターをコマンドで直接指定することもできます。
bin/kc.[sh|bat] bootstrap-admin service --client-id tmpclient --client-secret:env=SECRET_VAR
このコマンドは、クライアントID tmpclient
と環境変数から取得したシークレットを持つ一時的な管理者サービスアカウントを作成します。
パスワードレス、OTP、またはその他の高度な認証方法を、管理者アクセスが失われたレルムに強制できます。そのような場合、レルムへの失われた管理者アクセスを回復するには、管理者サービスアカウントを作成する必要があります。サービスアカウントが作成されたら、必要なすべての操作を実行するには、Keycloakインスタンスに対する認証が必要です。
bin/kcadm.[sh|bat] config credentials --server https://#:8080 --realm master --client <service_account_client_name> --secret <service_account_secret>
次に、credentialId
を取得します。この例では、OTPクレデンシャルが関連するものです。次のコマンドを使用してCredentialRepresentation
オブジェクトの配列を取得し、type
がotp
に設定されているオブジェクトを見つけます。
bin/kcadm.[sh|bat] get users/{userId}/credentials -r {realm-name}
最後に、取得したIDを使用して、高度な認証方法(この場合はOTP)を削除できます。
bin/kcadm.[sh|bat] delete users/{userId}/credentials/{credentialId} -r {realm-name}
起動シナリオと専用コマンドシナリオの両方で、ユーザー名とクライアントIDはオプションであり、ユーザーアカウントとサービスアカウントの両方でそれぞれtemp-admin
がデフォルトになります。
パラメーターのプロンプトを無効にするには、--no-prompt
パラメーターを使用できます。例:
bin/kc.[sh|bat] bootstrap-admin user --username tmpadm --no-prompt
対応する環境変数が設定されていない場合、コマンドは必須のパスワードパラメーターが欠落していることを示すエラーメッセージで失敗します。
--no-prompt
パラメーターは、ユーザー名またはクライアントIDを省略する必要がある場合に役立ちます。例:
bin/kc.[sh|bat] bootstrap-admin user --password:env PASS_VAR --no-prompt
これにより、確認を求めるプロンプトなしに、デフォルトのユーザー名を持つ一時的な管理者ユーザーが作成されます。詳細については、上記の「デフォルト値」セクションを参照してください。
bootstrap-admin user
コマンドの場合、ユーザー名とパスワードの両方を環境変数としてオプションで設定できます。
bin/kc.[sh|bat] bootstrap-admin user --username:env <YourUsernameEnv> --password:env <YourPassEnv>
bootstrap-admin service
コマンドの場合、クライアントIDはオプションであり、temp-admin
がデフォルトですが、クライアントシークレットは環境変数として設定する必要があります。
bin/kc.[sh|bat] bootstrap-admin service --client-id:env <YourClientIdEnv> --client-secret:env <YourSecretEnv>