1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OCI CLI の認証方法を整理する

Posted at

samune.png

はじめに

OCI CLI には幾つか認証方法があります。
本記事では認証方法についてまとめたうえで、ユーザーを操作主体とする各認証方法の手順についてハンズオン形式でまとめます。


OCI CLI について

コマンドラインで OCI のリソースを操作するためのツール です。
AWS CLI と同じ立ち位置ですね。

後述する認証方法により認証情報取得後、操作主体(ユーザー、コンピュートインスタンス、ファンクションなどの OCI リソース)に付与されたポリシーの権限により OCI リソースを操作します。


動作環境

Mac / Windows / Linux 上で実行可能です。
また、OCI CLI は Oracle Cloud Infrastructure SDK for Python 上に構築されているため、
動作環境には Python のインストールが必要です。

2025年11月時点での、サポートされている OS 及び Python バージョンは以下の通りです。

image.png

  • 上記表に記載の無い OS や Python のバージョンでの動作についての互換性テストは行われていないそうです

CLIは、記載されていないオペレーティング・システムで動作する可能性がありますが、互換性のテストは行われません。


OCI CLI でサポートされるサービス

OCI CLI で操作可能なサービス一覧のリンクを以下に掲載します。

基本的に OCI リソースの操作は REST API であり、OCI CLI はコンソールでの操作(API コール)を SDK で実装した形になります。
そのため CLI で操作可能かどうかは事前に確認する必要があります。


認証方法について

まず認証主体について以下表にまとめます。

主体 概要
IAM ユーザー ● アイデンティティ・ドメインにて管理するユーザーのこと
インスタンス ● コンピュートのこと
● AWS で言うところの EC2
OCI リソース ● コンピュート以外の OCI リソースのこと
● OCI Functions など
  • インスタンスも OCI リソースに含まれますが、OCI のドキュメントでは分けて記載されていることが多いため分けて記載しています

上記認証主体を理解した上で、OCI CLI 認証方法を以下表にまとめます。

認証方法 主体 概要
API キーベース認証 IAM ユーザー ● API キーをローカルで作成し、コンソールにて対象の IAM ユーザーと紐づける
● API キーは AWS で言うところの アクセスキーID / シークレットアクセスキー
● 権限は紐づけた IAM ユーザーに付与された IAM ポリシーに依存する
● AWS で言うところの、アクセスキーID / シークレットアクセスを発行してローカルでセットアップして利用する方法に近い
セッション・トークンベース認証 IAM ユーザー ● ブラウザ経由で認証(サインイン)し、有効期限付きのセッション・トークンを取得し利用
● API キーの作成は不要
● 権限はサインインした IAM ユーザーに付与された IAM ポリシーに依存する
● AWS で言うところの、AWS IAM Identity Center を使った AWS CLI 利用方法に近い
インスタンス・プリンシパル認証 インスタンス ● インスタンス・プリンシパルによりインスタンス(コンピュート)を認証認可する
● API キーの作成は不要
● ただし、対象インスタンスにて「oci setup instance-principal」を実行し、明示的にインスタンス・プリンシパル認証を利用するコマンドを実行する必要は有
● 権限は動的グループに付与された IAM ポリシーに依存する
● AWS で言うところの、IAM ロールを付与して AWS STS で一時的な認証情報を取得し、その認証情報と IAM ロールに付与された IAM ポリシーの権限で操作するのに近い
リソース・プリンシパル認証 インスタンス以外の OCI リソース
(Functions などのコードを使用するサービス)
● インスタンス以外の OCI リソースを認証認可する
● API キーの作成は不要
● ただし、コード内で Oracle Resource Principal Provider から認証トークンを明示的に取得する必要は有
● 権限は動的グループに付与された IAM ポリシーに依存する
● AWS で言うところの、IAM ロールを付与して AWS STS で一時的な認証情報を取得し、その認証情報と IAM ロールに付与された IAM ポリシーの権限で操作するのに近い

【補足:インスタンス・プリンシパル】

  • インスタンスから、OCI サービス及び OCI リソースを操作できるようにするための IAM サービス機能のこと


実践

それでは実際に試していきます。

前提

今回実施する際のローカル環境は以下の通りです。

  • OS:Windows 11
  • Python:3.12
  • GitBash:2.47.1.2
  • PowerShell:5.1.22621.1778

また、OCI 側の環境は以下の通りです。

  • ルートコンパートメント配下にコンパートメント(dev)を作成
  • コンパートメント(dev)にアイデンティティ・ドメイン(dev-admin)を作成
  • コンパートメント作成時にデフォルトで作成されるグループ(Domain_Administrators)にユーザーが所属
  • ポリシー(Admin-Policy)を作成しコンパートメント(dev)に配置
  • ポリシーのステートメントは以下の通り
Allow group 'dev-admin'/'Domain_Administrators' to manage all-resources in compartment dev

画像1.png

OCI CLI インストール

幾つかインストール方法がドキュメントにはありますが、今回は Windows ということで PowerShell でインストールします。

PowerShell を管理者権限で起動します。
そして以下のコマンドを実行し、インストールスクリプトをダウンロードします。

# (任意)ログインユーザーのダウンロードフォルダに移動
PS C:\WINDOWS\system32> cd $env:USERPROFILE\Downloads

# 実行ポリシーを変更
PS C:\Users\hogehoge\Downloads> Set-ExecutionPolicy RemoteSigned

# インストーラーダウンロード
PS C:\Users\hogehoge\Downloads> Invoke-WebRequest https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.ps1 -OutFile install.ps1

インストーラーを実行します。

  • -AcceptAllDefaults はオプションで、インストール時の設定が全てデフォルトで良ければつけたままで実行してください
  • バイナリの配置先を変更したい場合や、オプションパッケージを入れたい場合は、-AcceptAllDefaults は付けずに実行してください
  • インストーラーを実行する際、 Python がローカルにない場合は、依存関係として自動でインストールされます
PS C:\Users\hogehoge\Downloads> .\install.ps1 -AcceptAllDefaults
~~~
省略
~~~
-- Run the CLI with C:\Users\hogehoge\bin\oci.exe --help
詳細: Successfully installed OCI CLI!

PATH が通ってないので、追加します。
bin ディレクトリのインストール先を変更した方は適宜修正してください。

Win+Rsysdm.cpl と入力し「OK」をクリックします。
image.png

「詳細設定」→「環境変数」をクリックします。
image.png

PCにログインしているユーザーに追加するので、上段の「Path」をクリックし、「編集」をクリックします。
image.png

「新規」をクリックし、%USERPROFILE%\bin を入力後、「OK」をクリックします。
image.png

「OK」をクリックして PATH の追加は完了です。
image.png

追加した PATH を読み込ませるために PowerShell を再起動します。(一般ユーザー権限で大丈夫です)
その後以下のコマンドでバージョンが表示されれば完了です。

PS C:\Users\hogehoge> oci -v
3.69.0
  • ちなみにアンインストールは各種ディレクトリを削除します
  • 以下のディレクトリはデフォルト設定でインストールした場合なので、インストール先をカスタムした場合は変更先のディレクトリを削除してください
- %USERPROFILE%\lib\oracle-cli
- %USERPROFILE%\bin\oci.exe
- %USERPROFILE%\bin\oci-cli-scripts

API キーベース認証

API キーの実態は、公開鍵と秘密鍵のペアのことです。
その API キーの作成方法は以下 2 通りあります。

  • コンソールから秘密鍵をダウンロードして、ローカルにて設定する
  • ローカルで API キー (公開鍵/秘密鍵のペア) を作成して、公開鍵をコンソールにてアップロードする

今回は後者の方法で実施します。
加えて実運用を見据えて以下条件のもと実施します。

  • 複数ユーザーの API キーを利用する前提とし、プロファイルを分ける
  • DEFAULT プロファイルは使わず、明示的にプロファイルを指定することで誤操作をなくしたい

まず、手動で %USERPROFILE% 配下に .oci フォルダを作成し、
その中に config ファイルを作成します。
image.png

次に config ファイルに [DEFAULT] と記述して保存します。
[DEFAULT] としていますが、おそらくここは何かしら記載があれば良いと思います。
image.png

  • 本来なら、.oci フォルダ及び config ファイルは事前に作成する必要はありません
  • 後述する oci setup config を実行すれば自動で作成されます
  • ただし、その場合だと --profile オプションを指定しても [DEFAULT] として登録されてしまい、上述した条件を満たせないためこのようにしています
  • そのため、上記作業は任意ですのでご了承ください
  • このような方法でなくても、今回は割愛しますが、CLI構成ファイル (oci_cli_rc ファイル)や環境変数でもどうにかなります。が、今回はこの方法とします

ここからターミナルで API キーを作成します。
事前に「テナントOCID」及び「対象ユーザーのOCID」をメモ帳に控えておいてください。

ターミナルで以下コマンドを実行します。

$ oci setup config
  • オプションで --profile を指定しても意味なかったので不要です

実行するとまず初めに config ファイルの配置先を聞かれます。
デフォルトでは %USERPROFILE%\.oci 配下であり、特に問題ないので何も入力せず Enter を押します。

$ oci setup config
    This command provides a walkthrough of creating a valid CLI config file.

    The following links explain where to find the information required by this
    script:

    User API Signing Key, OCID and Tenancy OCID:

        https://docs.cloud.oracle.com/Content/API/Concepts/apisigningkey.htm#Other

    Region:

        https://docs.cloud.oracle.com/Content/General/Concepts/regions.htm

    General config documentation:

        https://docs.cloud.oracle.com/Content/API/Concepts/sdkconfig.htm


+ Enter a location for your config [C:\Users\hogehoge\.oci\config]: 

続いて「指定の場所に config ファイルが既に存在するけど、そのファイルにプロファイルを追記する?」と問われるので「Y」と入力し Enter を押します。

+ Config file: C:\Users\hogehoge\.oci\config already exists. Do you want add a profile here? (If no, you will be prompted to overwrite the file) [Y/n]: Y

続いてプロファイル名を聞かれるので、任意のプロファイル名を入力し Enter を押します。
この時小文字で入力しても、config ファイルに記載されるプロファイル名は大文字となります。

+ Enter the name of the profile you would like to create: dev-admin

続いて対象 IAM ユーザーの OCID を聞かれるので、入力して Enter を押します。

+ Enter a user OCID: ocid1.user.oc1..aaaaaaaaeoldfx6t3dwdauopuixhvsepvvfqcv4mhogehogehogehogehoge

続いて対象 IAM ユーザーのいるテナントの OCID を聞かれるので、入力して Enter を押します。

+ Enter a tenancy OCID: ocid1.tenancy.oc1..aaaaaaaas56j5f4nrox6bml6aldq66sic7adcst6hogehogehogehogehoge

続いて OCI CLI を実行したときにデフォルトでどのリージョンを見に行くかを聞かれるので、番号もしくはリージョン名を入力して Enter を押します。
私は 東京リージョンとしています。

Enter a region by index or name(e.g.
1: af-johannesburg-1, 2: ap-batam-1, 3: ap-chiyoda-1, 4: ap-chuncheon-1, 5: ap-chuncheon-2,
6: ap-dcc-canberra-1, 7: ap-dcc-gazipur-1, 8: ap-delhi-1, 9: ap-hyderabad-1, 10: ap-ibaraki-1,
11: ap-melbourne-1, 12: ap-mumbai-1, 13: ap-osaka-1, 14: ap-seoul-1, 15: ap-seoul-2,
+ 16: ap-singapore-1, 17: ap-singapore-2, 18: ap-suwon-1, 19: ap-sydney-1, 20: ap-tokyo-1,
21: ca-montreal-1, 22: ca-toronto-1, 23: eu-amsterdam-1, 24: eu-budapest-1, 25: eu-crissier-1,
26: eu-dcc-dublin-1, 27: eu-dcc-dublin-2, 28: eu-dcc-milan-1, 29: eu-dcc-milan-2, 30: eu-dcc-rating-1,
31: eu-dcc-rating-2, 32: eu-dcc-zurich-1, 33: eu-frankfurt-1, 34: eu-frankfurt-2, 35: eu-jovanovac-1,
36: eu-madrid-1, 37: eu-madrid-2, 38: eu-madrid-3, 39: eu-marseille-1, 40: eu-milan-1,
41: eu-paris-1, 42: eu-stockholm-1, 43: eu-zurich-1, 44: il-jerusalem-1, 45: me-abudhabi-1,
46: me-abudhabi-2, 47: me-abudhabi-3, 48: me-abudhabi-4, 49: me-alain-1, 50: me-dcc-doha-1,
51: me-dcc-muscat-1, 52: me-dubai-1, 53: me-ibri-1, 54: me-jeddah-1, 55: me-riyadh-1,
56: mx-monterrey-1, 57: mx-queretaro-1, 58: sa-bogota-1, 59: sa-santiago-1, 60: sa-saopaulo-1,
61: sa-valparaiso-1, 62: sa-vinhedo-1, 63: uk-cardiff-1, 64: uk-gov-cardiff-1, 65: uk-gov-london-1,
66: uk-london-1, 67: us-ashburn-1, 68: us-ashburn-2, 69: us-chicago-1, 70: us-gov-ashburn-1,
71: us-gov-chicago-1, 72: us-gov-phoenix-1, 73: us-langley-1, 74: us-luke-1, 75: us-newark-1,
+ 76: us-phoenix-1, 77: us-saltlake-2, 78: us-sanjose-1, 79: us-somerset-1, 80: us-thames-1): 20

続いて「新規に API キーを作成しますか?」と聞かれるので、「Y」を入力して Enter を押します。
※ 仮にコンソールで事前に秘密鍵をダウンロードしている場合は「n」となります。

+ Do you want to generate a new API Signing RSA key pair? (If you decline you will be asked to supply the path to an existing key.) [Y/n]: Y

続いて API キーの配置先を聞かれます。
デフォルトでは %USERPROFILE%\.oci 配下であり、特に問題ないので何も入力せず Enter を押します。

+ Enter a directory for your keys to be created [C:\Users\hogehoge\.oci]: 

続いて作成する API キーのファイル名を聞かれます。
デフォルトでは oci_api_key です。フォルダを分けるならそのままでも良いとは思いますが、私は .oci ファルダ配下にまとめる想定であるため、ファイル名を入力しています。

+ Enter a name for your key [oci_api_key]: dev_admin_oci_api_key

続いて秘密鍵に設定するパスフレーズを聞かれます。
セキュリティ的にはパスフレーズを入力した方が良いですが、CLI 実行の度に聞かれるので今回は無しにします。
無しにしたい場合は、N/A と入力し Enter を押します。
この時、入力した文字列は表示されません。

+ Enter a passphrase for your private key ("N/A" for no passphrase):

再度確認されるので、N/A と入力し Enter を押します。

+ Repeat for confirmation:

以上でローカルでの作業は完了です。
「公開鍵をアップロードしてね」って記載されているのでこの後アップロードしていきます。

Private key written to: C:\Users\hogehoge\.oci\dev_admin_oci_api_key.pem
Fingerprint: b7:fd:8c:8e:00:a8:66:d1:63:1d:ho:ge:ho:ge:ho:ge
Config written to C:\Users\hogehoge\.oci\config


    If you haven't already uploaded your API Signing public key through the
    console, follow the instructions on the page linked below in the section
    'How to upload the public key':

        https://docs.cloud.oracle.com/Content/API/Concepts/apisigningkey.htm#How2

実際に .oci フォルダには公開鍵と秘密鍵が作成されています。
image.png

また、config ファイルには指定したプロファイル名と情報が追記されています。
image.png

  • プロファイル名及び値は後から直接編集可能です

では、公開鍵をアップロードします。
OCI コンソールにて対象のユーザーを選択します。
image.png

「APIキー」→「APIキーの追加」をクリックします。
image.png

「公開キー・ファイルの選択」にチェックを入れ、公開鍵をアップロードして「追加」をクリックします。
公開鍵は ファイル名に _public がついているファイルです。
image.png

アップロードするとプレビューが表示されますが、特に気にする必要はありません。
image.png

最後に動作確認をします。
以下のコマンドを実行し、結果が表示されればOKです。
プロファイル名はご自身のものに置き換えてください。

$ oci iam region list --profile DEV-ADMIN
  • ちなみに、公開鍵はローカルで保持する必要はありません
  • アップロードが完了したら削除しても大丈夫です
  • ただ公開鍵なので、漏洩してもリスクは少ないのとサイズも小さいので残しておいても気にはならないと思います

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

セッション・トークンベース認証は、ローカルでAPI キーを作成し、その API キーを使ってトークンファイルを作成します。そしてそのトークンファイルを使って認証する方法です。
API キーベース認証 と異なる点は、API キーを作成する点は同じですが、「公開鍵をアップロードしない点」と「有効期限付きのトークンファイルで認証している点」です。

それではセッション・トークンベース認証を試していきます。
今回はAPI キーベース認証 実施後の config ファイル及び .oci フォルダ配下ファイル群とします。

image.png

  • もちろん事前に .oci フォルダ及び config ファイルが無くても問題ありません
  • その場合は自動で作成されます
  • その時のプロファイル名は DEFAULT です

まず、以下コマンドを実行します。

$ oci session authenticate
  • オプションで --profile を指定しても意味なかったので不要です

すると、デフォルトでどのリージョンを見に行くかを聞かれるので、番号もしくはリージョン名を入力して Enter を押します。
私は 東京リージョンとしています。

Enter a region by index or name(e.g.
1: af-johannesburg-1, 2: ap-batam-1, 3: ap-chiyoda-1, 4: ap-chuncheon-1, 5: ap-chuncheon-2,
6: ap-dcc-canberra-1, 7: ap-dcc-gazipur-1, 8: ap-delhi-1, 9: ap-hyderabad-1, 10: ap-ibaraki-1,
11: ap-melbourne-1, 12: ap-mumbai-1, 13: ap-osaka-1, 14: ap-seoul-1, 15: ap-seoul-2,
+ 16: ap-singapore-1, 17: ap-singapore-2, 18: ap-suwon-1, 19: ap-sydney-1, 20: ap-tokyo-1,
21: ca-montreal-1, 22: ca-toronto-1, 23: eu-amsterdam-1, 24: eu-budapest-1, 25: eu-crissier-1,
26: eu-dcc-dublin-1, 27: eu-dcc-dublin-2, 28: eu-dcc-milan-1, 29: eu-dcc-milan-2, 30: eu-dcc-rating-1,
31: eu-dcc-rating-2, 32: eu-dcc-zurich-1, 33: eu-frankfurt-1, 34: eu-frankfurt-2, 35: eu-jovanovac-1,
36: eu-madrid-1, 37: eu-madrid-2, 38: eu-madrid-3, 39: eu-marseille-1, 40: eu-milan-1,
41: eu-paris-1, 42: eu-stockholm-1, 43: eu-zurich-1, 44: il-jerusalem-1, 45: me-abudhabi-1,
46: me-abudhabi-2, 47: me-abudhabi-3, 48: me-abudhabi-4, 49: me-alain-1, 50: me-dcc-doha-1,
51: me-dcc-muscat-1, 52: me-dubai-1, 53: me-ibri-1, 54: me-jeddah-1, 55: me-riyadh-1,
56: mx-monterrey-1, 57: mx-queretaro-1, 58: sa-bogota-1, 59: sa-santiago-1, 60: sa-saopaulo-1,
61: sa-valparaiso-1, 62: sa-vinhedo-1, 63: uk-cardiff-1, 64: uk-gov-cardiff-1, 65: uk-gov-london-1,
66: uk-london-1, 67: us-ashburn-1, 68: us-ashburn-2, 69: us-chicago-1, 70: us-gov-ashburn-1,
71: us-gov-chicago-1, 72: us-gov-phoenix-1, 73: us-langley-1, 74: us-luke-1, 75: us-newark-1,
+ 76: us-phoenix-1, 77: us-saltlake-2, 78: us-sanjose-1, 79: us-somerset-1, 80: us-thames-1): 20

すると、割愛しますが、ブラウザが起動しユーザー認証を求められます。
該当ユーザーで認証を実施してください。

ユーザー認証が完了すると、今回のように、既に config ファイルがありプロファイル名が記載されている場合、作成するプロファイル名が聞かれます。そのため、プロファイル名を記入し Enter を押します。
私は Session-Dev-Admin としました。

$ oci session authenticate
Enter a region by index or name(e.g.
1: af-johannesburg-1, 2: ap-batam-1, 3: ap-chiyoda-1, 4: ap-chuncheon-1, 5: ap-chuncheon-2,
6: ap-dcc-canberra-1, 7: ap-dcc-gazipur-1, 8: ap-delhi-1, 9: ap-hyderabad-1, 10: ap-ibaraki-1,
11: ap-melbourne-1, 12: ap-mumbai-1, 13: ap-osaka-1, 14: ap-seoul-1, 15: ap-seoul-2,
16: ap-singapore-1, 17: ap-singapore-2, 18: ap-suwon-1, 19: ap-sydney-1, 20: ap-tokyo-1,
21: ca-montreal-1, 22: ca-toronto-1, 23: eu-amsterdam-1, 24: eu-budapest-1, 25: eu-crissier-1,
26: eu-dcc-dublin-1, 27: eu-dcc-dublin-2, 28: eu-dcc-milan-1, 29: eu-dcc-milan-2, 30: eu-dcc-rating-1,
31: eu-dcc-rating-2, 32: eu-dcc-zurich-1, 33: eu-frankfurt-1, 34: eu-frankfurt-2, 35: eu-jovanovac-1,
36: eu-madrid-1, 37: eu-madrid-2, 38: eu-madrid-3, 39: eu-marseille-1, 40: eu-milan-1,
41: eu-paris-1, 42: eu-stockholm-1, 43: eu-zurich-1, 44: il-jerusalem-1, 45: me-abudhabi-1,
46: me-abudhabi-2, 47: me-abudhabi-3, 48: me-abudhabi-4, 49: me-alain-1, 50: me-dcc-doha-1,
51: me-dcc-muscat-1, 52: me-dubai-1, 53: me-ibri-1, 54: me-jeddah-1, 55: me-riyadh-1,
56: mx-monterrey-1, 57: mx-queretaro-1, 58: sa-bogota-1, 59: sa-santiago-1, 60: sa-saopaulo-1,
61: sa-valparaiso-1, 62: sa-vinhedo-1, 63: uk-cardiff-1, 64: uk-gov-cardiff-1, 65: uk-gov-london-1,
66: uk-london-1, 67: us-ashburn-1, 68: us-ashburn-2, 69: us-chicago-1, 70: us-gov-ashburn-1,
71: us-gov-chicago-1, 72: us-gov-phoenix-1, 73: us-langley-1, 74: us-luke-1, 75: us-newark-1,
76: us-phoenix-1, 77: us-saltlake-2, 78: us-sanjose-1, 79: us-somerset-1, 80: us-thames-1): 20
    Please switch to newly opened browser window to log in!
    You can also open the following URL in a web browser window to continue:
https://login.ap-tokyo-1.oraclecloud.com/v1/oauth2/authorize?action=login&client_id=iaas_console&response_type=token+id_token&nonce=555dc309-2cf5-4ce3-9b5c-bb7de223ef6c&scope=openid&public_key=eyJrdHkiOiAiUlNBIiwgIm4iOiAieG5penR2bnowT0FVSmdMNkVaMUFiSi1iU3k5eHFqaTY4ZUxfdmZwNGtHdVV0d09RWTFkX0twSHlacS1qU1MxZ3FGMTB4TUgyQkFKTHgwMkdUdWlzckdia3Z4Nnp1MVF4MUMzU0NZZTJMVlVHZDZEZzdCMmdZMTFSdzVwSlI5UWpuWk8tT2o0VHRScmo4RHN6TG1YR0tpMFo0bmVMZnlGUS1Dd0NCWXNEM1lFT1VDTFFqa2tjcGdQaWc3NHFRX3VoeFlVR1lkUjZwak9jNTJFSWxSWWthRFAtT2NjVmJKWDVfTzNudVMwajE2NVF4Wkcwb3dUc01DaF91OURwTnBlSmhPQzhwTTlxOUQ1SkowdE1wamVibDhnTXRsNF9LQVNuOWYyVW1UWnFwczJRLUJsZHpVZ3gzTWpoRllYVHR3eWMzNjd1QXpjOTlsRDlOLTRzeVAwWkJRIiwgImUiOiAiQVFBQiIsICJraWQiOiAiSWdub3JlZCJ9&redirect_uri=http%3A%2F%2Flocalhost%3A8181
    Completed browser authentication process!
+ Enter the name of the profile you would like to create: Session-Dev-Admin

すると config ファイルに追記した旨のプロンプトが表示されます。
これでトークンファイルの生成が完了しました。

Config written to: C:\Users\hogehoge\.oci\config

    Try out your newly created session credentials with the following example command:

    oci iam region list --config-file C:\Users\hogehoge\.oci\config --profile Session-Dev-Admin --auth security_token

config ファイルは以下の通りです。
API キーベース認証で作成したプロファイルの値と比較すると、user が無いのと、新しく security_token_file が追加されていますね。

image.png

  • ちなみに user 情報は後ほど出てくる token ファイル内に情報があります

.oci フォルダ配下は以下の通りです。
まず、sessions というフォルダ作成されています。
image.png

sessions フォルダ配下には、プロファイル名 フォルダが作成されています。
image.png

プロファイル名 フォルダ配下には、トークンファイル生成用の API キー (公開鍵/秘密鍵) とトークンファイルがあります。
image.png

  • つまり、oci session authenticate コマンドでトークンファイル生成用の API キー (公開鍵/秘密鍵) とトークンファイルを生成しています

最後に動作確認をします。
以下のコマンドを実行し、結果が表示されればOKです。
プロファイル名はご自身のものに置き換えてください。

$ oci iam region list --profile Session-Dev-Admin --auth security_token
  • --auth security_token と明記することで、セッション・トークンベース認証で実行されます
  • トークン有効期限はデフォルトの 60 分です
  • 明記しない場合は、デフォルトの API キーベース認証で実行されます
  • 仮に oci session authenticate で作成したプロファイル名指定で --auth security_token を明記せずに実行すると、デフォルトの API キーベース認証で実行しようとし、config ファイル内の値に user が無くエラーとなります
  • --no-browser オプションは確かにブラウザ認証せずにするものです
  • しかし前提として、既にローカルの %USERPROFILE%\.oci\sessions\プロファイル名 配下にある、 セッションファイル及びセッションを生成するために使用した公開鍵/秘密鍵が保持されていなければなりません
  • つまり、--no-browser の動きとしては、以前作成されたローカルにある公開鍵/秘密鍵を利用してセッションファイルを再生成しているだけです
  • そのため --no-browser を使用するには、一度ブラウザ認証を実施する必要があります
  • ちなみに、oci session authenticate 実行時に指定可能な、トークン有効期限を制御するための --session-expiration-in-minutes オプションは、--no-browser オプションもセットで明記しないと動作しませんでした
  • ただし有効期限は 5分~60分の間でしか設定できません(デフォルトは60分です)

おわりに

本記事では認証方法についてまとめたうえで、ユーザーを操作主体とする各認証方法の手順についてハンズオン形式でまとめました。
CLI は何かと利用する機会が多いと思いますので、参考にしてみてください。


🌟この記事が誰かの役に立てば幸いです!
また、ご質問やフィードバックもお待ちしています。


番外編

pip インストール

PyPI (Python Package Index)という公式のリポジトリから、pip を使ってインストールします。

  • OCI としては仮想環境にインストールすることを推奨していますが、今回は共有ディレクトリにインストールします

ターミナルで以下コマンドを実行します。

$ pip install oci-cli

~~~
省略
~~~

Installing collected packages: oci-cli
Successfully installed oci-cli-3.69.0

インストール完了後、バージョンが表示されれば OK です。

$ oci -v
3.69.0
  • ちなみにアンインストールは以下のコマンドです
$ pip uninstall oci-cli

インストールエラー (this system does not have Windows Long Path support enabled)

インストールを実行した際に以下のエラーが出た方は次の方法を実行してみてください

ERROR: Could not install packages due to an OSError: [Errno 2] No such file or directory: 'C:\\Users\\hogehoge\\.pyenv\\pyenv-win\\versions\\3.12.0\\Lib\\site-packages\\oci_cli\\help_text_producer\\data_files\\text\\cmdref\\database-management\\managed-database\\enable-autonomous-database-management-feature-autonomous-database-diagnostics-and-management-feature-details.txt'
HINT: This error might have occurred since this system does not have Windows Long Path support enabled. You can find information on how to enable this at https://pip.pypa.io/warnings/enable-long-paths

PowerShell を管理者権限で起動し以下のコマンドを実行します。

New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" -Name "LongPathsEnabled" -Value 1 -PropertyType DWORD -Force

実行後、ターミナルを再起動し、再度インストールを試してみてください。


参考資料

リファレンス

ブログ

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?