CLIでのトークンベースの認証
CLIのトークンベース認証では、CLIコマンド・リクエストの認証に使用できる一時セッション・トークンを作成できます。このトークンは、Webブラウザの有無にかかわらず生成できます。
要件
要件は、RequirementsのCLIにリストされている要件と同じです。
ブラウザを使用したCLIセッションの作成
WebブラウザがあるコンピュータでCLIのトークンベースの認証を使用するには:
- ターミナルで、次のコマンドを実行します:
oci session authenticate
- リージョンの選択
- ブラウザで、ユーザーの資格証明を入力します。
- 認証に成功したら、ブラウザを閉じて、端末の対話型プロンプトに従います。構成ファイルが作成されます。
ブラウザを使用しない CLIセッションの作成
ブラウザなしでユーザー・トークンを生成するには、まず次のいずれかの方法で認証する必要があります。
-
APIキー・ベース認証(oci setup config)
-
セッション・トークン・ベース認証(oci session authenticate)
APIキーベース認証
WebブラウザなしでCLIのトークンベースの認証を使用するには、次のコマンドを実行します:
oci session authenticate --no-browser
このコマンドは、公開キーと秘密キーのペアを作成し、.config
ファイルの秘密キー・ファイルの場所を更新します。
セッション・トークンベース認証
oci session authenticate --no-browser --auth security_token
オプションの引数
APIキーベース認証とセッション・トークンベース認証の両方について、公開キーへのパスを引数として指定できます。これは、生成されたトークンを使用しているときに、対応する秘密キーによって署名できるセッション・トークンを提供します。
oci session authenticate --no-browser --public-key-file-path <path-to-public-key> --profile <profile_name> --auth security_token
--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
に設定する必要があります。 トークンのリフレッシュ
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ブラウザなしのコンピュータにインポートする必要があります。
ソース・コンピュータからのエクスポート
ブラウザがあるソース・コンピュータで:
- CLIで、次のコマンドを実行します:
oci session authenticate
- ターゲット・コンピュータで使用するユーザー資格証明を入力します。
- 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用です:
.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()
.config
ファイルによって指定された秘密キーを読み取ります。private_key = oci.signer.load_private_key_from_file(config['key_file'])
- ユーザー指定リージョンをターゲットとする最初のSDKクライアントを作成します。
signer = oci.auth.signers.SecurityTokenSigner(token, private_key) client = oci.identity.IdentityClient({'region': region}, signer=signer)
- アイデンティティ・リクエストを作成します。
result = client.list_region_subscriptions(config['tenancy'])