CLIでのトークンベースの認証

CLIのトークンベース認証では、CLIコマンド・リクエストの認証に使用できる一時セッション・トークンを作成できます。このトークンは、Webブラウザの有無にかかわらず生成できます。

要件

要件は、RequirementsのCLIにリストされている要件と同じです。

ブラウザを使用したCLIセッションの作成

WebブラウザがあるコンピュータでCLIのトークンベースの認証を使用するには:

  1. ターミナルで、次のコマンドを実行します:
    oci session authenticate
  2. リージョンの選択
  3. ブラウザで、ユーザーの資格証明を入力します。
  4. 認証に成功したら、ブラウザを閉じて、端末の対話型プロンプトに従います。構成ファイルが作成されます。

ブラウザを使用しない CLIセッションの作成

ブラウザなしでユーザー・トークンを生成するには、まず次のいずれかの方法で認証する必要があります。

  1. APIキー・ベース認証(oci setup config)

  2. セッション・トークン・ベース認証(oci session authenticate)

APIキーベース認証

WebブラウザなしでCLIのトークンベースの認証を使用するには、次のコマンドを実行します:

oci session authenticate --no-browser

このコマンドは、公開キーと秘密キーのペアを作成し、.configファイルの秘密キー・ファイルの場所を更新します。

セッション・トークンベース認証

セッション・トークンを使用している場合:
oci session authenticate --no-browser --auth security_token

オプションの引数

APIキーベース認証とセッション・トークンベース認証の両方について、公開キーへのパスを引数として指定できます。これは、生成されたトークンを使用しているときに、対応する秘密キーによって署名できるセッション・トークンを提供します。

CLIで、次のコマンドを実行します:
oci session authenticate --no-browser --public-key-file-path <path-to-public-key> --profile <profile_name> --auth security_token
トークンが存続する時間を制御できます。トークンが存続する最小時間は5分で、トークン永続性の最大時間は60分(デフォルト値)です。トークンのカスタム・セッション有効期限を設定するには、パラメータ--session-expiration-in-minutes.を使用します例:
oci session authenticate --no-browser --session-expiration-in-minutes <token-persistence-time-in-minutes> --profile <profile_name> --auth security_token
ノート

複数のユーザー・トークンが必要な場合は、oci session authenticate --no-browserを使用して、ブラウザなしトークン・ベースの認証を再度実行します。

トークンの検証

トークンが有効であることを確認するには、次のコマンドを実行します:

oci session validate --config-file <path_to_config_file> --profile <profile_name> --auth security_token
セッションの有効期限を示すメッセージを受信する必要があります。エラーが発生した場合は、プロファイル設定を確認します。
ノート

セッション・トークンを使用してCLIコマンドを認証するには、--auth security_tokenを使用するか、OCI_CLI_AUTH環境変数をsecurity_tokenに設定する必要があります。

トークンのリフレッシュ

デフォルトのトークン有効期限は1時間に設定され、有効期間内にリフレッシュして最大24時間まで設定できます。
ノート

oci session authenticate --no-browserを使用して認証されたセッションの場合、最大値は60分です。

トークンをリフレッシュするには、次のコマンドを実行します:

oci session refresh --profile <profile_name>
ノート

セッション・トークンを使用してCLIコマンドを認証するには、--auth security_tokenを使用するか、OCI_CLI_AUTH環境変数をsecurity_tokenに設定する必要があります。

別のマシンへの CLIセッショントークンのコピー

WebブラウザがないコンピュータでCLIのトークンベースの認証を使用するには、Web対応コンピュータからセッションをエクスポートしてから、Webブラウザなしのコンピュータにインポートする必要があります。

ソース・コンピュータからのエクスポート

ブラウザがあるソース・コンピュータで:

  1. CLIで、次のコマンドを実行します:
    oci session authenticate
  2. ターゲット・コンピュータで使用するユーザー資格証明を入力します。
  3. zipファイルをエクスポートするには、次のコマンドを実行します:
    oci session export --profile <profile_name> --output-file <output_filename>

エクスポートを確認するには、トークンの検証を参照してください。

ターゲット・コンピュータへのインポート

ブラウザがないターゲット・コンピュータで、CLIの次のコマンドを実行します:

oci session import --session-archive <path_to_exported_zip>

次を実行することで、インポートをテストできます:

oci iam region list --config-file <path_to_config_file> --profile <profile_name> --auth security_token

リージョンのリストが返される必要があります。このコマンドが正常に実行されると、トークン認証が予期したとおりに機能していることが検証されます。

ブラウザがないコンピュータでのスクリプトの実行

ターゲット・コンピュータに認証をインポートした後、次の設定を使用してCLIおよびSDKを実行できます。

CLIの場合

CLIでスクリプトを実行するには、次の接尾辞を付けます:

--config-file <path_to_config_file> --profile <profile_name> --auth security_token

SDKの場合

ターゲット・コンピュータ上でSDKを実行するには、トークン・ファイルを読み取り、それを使用してSecurityTokenSignerを初期化する必要があります。

ブラウザを使用したCLIセッションの作成に示すようにトークン・ファイルを作成してから、次のプロセスを使用します。

ノート

この方法は、OCI SDK for GoおよびPythonでのみ動作します。次の例は、Oracle Cloud Infrastructure SDK for Python用です:
  1. .configファイルのsecurity_token_fileパラメータからトークン・ファイルを読み取ります。
    config = oci.config.from_file(profile_name='TokenDemo')
    token_file = config['security_token_file']
    token = None
    with open(token_file, 'r') as f:
         token = f.read()
  2. .configファイルによって指定された秘密キーを読み取ります。
    private_key = oci.signer.load_private_key_from_file(config['key_file'])
  3. ユーザー指定リージョンをターゲットとする最初のSDKクライアントを作成します。
    signer = oci.auth.signers.SecurityTokenSigner(token, private_key) 
    client = oci.identity.IdentityClient({'region': region}, signer=signer)
  4. アイデンティティ・リクエストを作成します。
    result = client.list_region_subscriptions(config['tenancy'])