2020年2月25日火曜日

APEXからOCIオブジェクト・ストレージを操作する(1) - APIユーザーの作成

これからの作業を行なうコンパートメントを作成します。その後にオブジェクト・ストレージを操作するAPIの呼び出しに使用するユーザーを作成します。

以下より、作成手順を記述します。


コンパートメントの作成


 
OCIコンソールにあるハンバーガー・アイコンをクリックしてメニューを表示させ、アイデンティティとセキュリティよりコンパートメントを呼び出します。
 

コンパートメント一覧の画面にあるコンパートメントの作成をクリックします。


以下の作成フォームが開きます。

作成するコンパートメントの名前APEXと入力し、適当な説明を入力します。親コンパートメントとしてルートを選択します。

コンパートメントの作成をクリックします。
 

コンパートメントは即時で作成されます。
 


グループの作成


 
OCIコンソールよりアイデンティティグループを開き、グループ一覧の画面にあるグループの作成をクリックします。
 

画面右からドロワーが開きます。

作成するグループの名前APEXObjectManagersと入力し、適当な説明を入力します。

作成をクリックします。
 

グループも即時で作成されます。
 



ポリシーの作成



OCIコンソールよりアイデンティティポリシーを開き、ポリシー一覧の画面にあるポリシーの作成をクリックします。あらかじめコンパートメントとしてルートを選択しておきます。


ポリシーの作成フォームが開きます。

作成するポリシーの名前APEXObjectManagementPoliciesとします。ポリシーを作成するコンパートメントルートを選択します。ポリシー・ビルダー手動エディタの表示ONにし、以下の2行のポリシー・ステートメントを記述します。

Allow group APEXObjectManagers to read buckets in compartment APEX
Allow group APEXObjectManagers to manage objects in compartment APEX

ポリシー・ステートメントを記述した後、作成をクリックします。
 

ポリシーも即時で作成されます。
 



ユーザーの作成



OCIコンソールよりアイデンティティユーザーを開き、ユーザー一覧の画面にあるユーザーの作成をクリックします。


ユーザーの作成フォームが開きます。

IAMユーザーを選択し、名前としてapex_api_agentを入力します。

作成をクリックします。
 

ユーザーも即時で作成されます。

ユーザー機能の編集をクリックして、機能を選択するフォームを開きます。


APIキーだけを選択し、変更の保存をクリックします。



APIキーの追加



リソースAPIキーを開き、APIキーの追加をクリックします。


APIキーを追加する方法は、2種類あります。
  1. APIキー・ペアの生成を選択し、ブラウザで生成された秘密キーのダウンロードを行う。
  2. 手元で公開キーのペアを作成し、公開キーをアップロードするか貼付ける
公開キー・ファイルのアップロードと貼付けは、手順が違うだけで追加されるAPIキーは同じです。


opensslを使って、APIキーに使用する公開キーと秘密キーのペアを生成してみます。秘密キーのファイルとしてapex_oci_api_key.pemが作成されます。生成されたファイルは、所有者だけが読めるように権限を変更します。

openssl genrsa -out apex_oci_api_key.pem 2048
chmod 400 apex_oci_api_key.pem

% openssl genrsa -out apex_oci_api_key.pem 2048

Generating RSA private key, 2048 bit long modulus

...............................................................+++++

...........................................+++++

e is 65537 (0x10001)

% chmod 400 apex_oci_api_key.pem 

%


APIキーとして登録する公開キーを取り出します。公開キーを含むファイルはapex_oci_api_key_public.pemになります。

openssl rsa -pubout -in apex_oci_api_key.pem -out apex_oci_api_key_public.pem

% openssl rsa -pubout -in apex_oci_api_key.pem -out apex_oci_api_key_public.pem 

writing RSA key

% 


このファイルを選択するか、内容を貼り付つけます。その後に、追加をクリックしてAPIキーを追加します。


ブラウザでAPIキー・ペアを作成する場合は、APIキー・ペアの生成を選択します。

秘密キーのダウンロードをクリックし、秘密キーをファイルに落とします。同じ秘密キーを使用したAPIキーを再度追加できるように、公開キーのダウンロードを行い秘密キーと公開キーのペアを保持しておくと便利です(すでに実行済みですが、秘密キーのファイルから取り出すことも可能です)。


ダウンロードした秘密キーのファイル名をprivate.pem、公開キーのファイル名をpublic.pemに変更した前提で、後処理の手順を説明します。

ブラウザからダウンロードされた秘密キーの形式はPKCS#8です。これをPKCS#1に変換するために以下のコマンドを実行します。ただし、こちらの記事で確認しましたが、どちらのフォーマットでもWeb資格証明を作成できるため、必ずしも必要な作業ではありません。

openssl rsa -in private.pem -out apex_oci_api_key.pem

% openssl rsa -in private.pem -out apex_oci_api_key.pem

writing RSA key

%


生成されたファイルapex_oci_api_key.pemは、先ほどopenssl genrsaコマンドで作成したファイルと同じフォーマットになります。

公開キーのファイルのフォーマットに違いはないため、apex_oci_api_key_public.pemと名称を変更すれば、同様に取り扱うことができます。

mv public.pem apex_oci_api_key_public.pem

% mv public.pem apex_oci_api_key_public.pem

% 


どちらの方法でもAPIキー・ペアの生成を行った後に、追加をクリックします。


APIキーが追加されると、構成ファイルのプレビューが表示されます。この情報はAPEXにWeb資格証明を作成する際に使用します。コピーをファイルなどに保存しておきます。

コピーを保存したのち、閉じるをクリックします。


フィンガープリントについては、以下のコマンドでも生成できます。

openssl rsa -pubout -outform DER -in apex_oci_api_key.pem | openssl md5 -c

% openssl rsa -pubout -outform DER -in apex_oci_api_key.pem | openssl md5 -c

writing RSA key

be:6d:58:c3:9d:c9:93:3d:de:93:03:95:a6:17:b1:b6

%


APEXのWeb資格証明を作成する際に、使用する秘密キーがOCIのユーザーに追加されているAPIキーに対応しているかどうか、このフィンガープリントを使って確認できます。

APIキーが追加されると、以下のようにフィンガープリントが表示されます。


APIキーの追加時に表示された構成ファイルの内容は、APIキーの一覧の構成ファイルの表示を実行して、再度表示させることができます。



ユーザーをグループに追加



作成したユーザーapex_api_agentをグループAPEXObjectManagersに追加します。

リソースからグループを開き、ユーザーをグループに追加をクリックします。


グループとしてAPEXObjectManagersを選択し、追加をクリックします。


ユーザーapex_api_agentがグループAPEXObjectManagersに追加されました。


以上で、Oracle APEXのアプリケーションからOCIオブジェクト・ストレージを操作するために使用するユーザーが作成できました。また、今後の作業に使用するコンパートメントも作成しています。

続く