APC 技術ブログ

株式会社エーピーコミュニケーションズの技術ブログです。

株式会社 エーピーコミュニケーションズの技術ブログです。

【OCI】パスワードや環境変数を安全に管理!シークレットをインスタンスから取得する方法

目次

はじめに

こんにちは、クラウド事業部の齋藤です。

パスワード等の機密情報を暗号化して管理したい、変数を外出ししたい、そんな要望あったりしますよね。
OCIでは、コンピュート・インスタンスの場合はボールトというサービスでシークレットとして管理できるみたいなので、やってみました。
※単純に変数を外出しするだけならインスタンス・メタデータに設定したりオブジェクトストレージにテキストファイルを置いたりできるみたいです。

どんなひとに読んで欲しい

  • OCIでコンピュート・インスタンスを使っている人、使う予定の人

手順

前提

  • シークレットの値を取得するコンピュート・インスタンスが作成済みであること
  • シークレットの値を取得するコンピュート・インスタンスがインターネット(またはサービス・ゲートウェイ)経由でボールトのAPIにアクセスできること

動的グループの作成

[アイデンティティとセキュリティ]-[ドメイン]画面に進み、シークレットを参照するコンピュート・インスタンス用の動的グループを作成してください。
ドメインのあるルートコンパートメントや子コンパートメントで作成してくださいね。
一致ルール: Any {instance.id = 'ocid1.instance.oc1.ap-tokyo-1.<シークレットを参照するコンピュートインスタンスのOCID>'}

ポリシーの作成

[アイデンティティとセキュリティ]-[ポリシー]画面に進み、シークレットを参照するコンピュート・インスタンスに付与する権限を設定します。 今回はシークレットが取得できれば良いので読み取り権限のみにしています。 また、コンピュート・インスタンスやシークレットを作成するコンパートメントで作成しましたが、環境によってinの後ろの定義方法は変わるためご注意ください。私はドメインと同じルートコンパートメントにこのポリシーを作成してしまいハマってしまいました。。。

ステートメント: Allow dynamic-group '<ドメイン名>'/'<動的グループ名>' to read secret-bundle in compartment <コンパートメント名>

シークレットの作成

まず初めにボールトを作成します。
[アイデンティティとセキュリティ]-[ボールト]画面に進み、マスター暗号化キーやシークレットを格納するためのボールトを作成します。

次にシークレットを暗号化するためのマスター暗号化キーを作成します。

最後にシークレットを作成します。
今回は変数の名前と値を自分で定義しますが、パスワード生成など自動で行うことも可能です。
* 名前:<変数名> * 暗号化キー:<先程作成した暗号化キー> * シークレット・コンテンツ:<変数の値> 以降の項目はデフォルトで問題ないです。

envというシークレットができました。
シークレットでは変数名と値が1セットのみ定義可能です。

コンソールから値を確認するには[バージョン]タブ → バージョンを選択 → 三点リーダーの[シークレット・コンテンツの表示]をクリックすると表示できます。
暗号化された値が表示されるので、[デコードされたBase64桁の表示]スイッチをOnにしてください。

作成されたシークレットのOCIDをコピーしてメモしておいてください。

コンピュート・インスタンスからシークレットの値を取得

コンピュート・インスタンスに接続し、OCI CLIでシークレットの値を取得します。
プライベートサブネットのインスタンスへの接続やOCIコマンドのインストール方法は以下のブログに詳しく書いてありますので参考まで。
OCI CLIインストールと事前設定

以下コマンド実行例です。 --secret-id の値には事前にメモしておいたシークレットのOCIDを指定してください。 値はBase64でエンコードされてされているので、デコードが必要になります。 コマンドを実行すると、無事にシークレットに設定した値が返ってきました!

$ oci secrets secret-bundle get --secret-id <シークレットのOCID> | jq '.data["secret-bundle-content"].content' -r | base64 -d
dev

おわりに

OCIでパスワードや変数を扱うときにはシークレットが便利そうです。
OCIコンテナサービスやOKEは異なる方法になるようなので、機会があればブログに書こうと思います!

お知らせ

私達クラウド事業部はクラウド技術を活用したSI/SESのご支援をしております。

www.ap-com.co.jp

また、一緒に働いていただける仲間も募集中です!
今年もまだまだ組織規模拡大中なので、ご興味持っていただけましたらぜひお声がけください。

www.ap-com.co.jp