10
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

GCPのSecret Managerを試した

Posted at

背景

Google Cloud Secret Manager のご紹介 で新機能※ベータの公開を知りました。
従来は都度KMSで復号したりするのが辛かったので
簡単に扱えるようになったら嬉しいと思って試用してみました。

やったこと

下準備

基本的にはサービスからアクセスさせる想定なので、今回はサービスアカウントを作成しました。
serviceaccount.png

「Secret Manager のシークレット アクセサー」の権限をつけておきます。
aut.png
参考: シークレット マネージャーの役割

サービスアカウントの発行時にjsonでキーを発行し、読み込んでおきます。

環境変数でクレデンシャルを設定
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/service_account_key.json"

シークレットの作成

管理者の権限で実施します。
secre.png

シークレットの取得

サンプルコードを参考に、node.jsのスクリプトから取得します。

ライブラリを読み込む実行ファイルの準備
$ mkdir secret-manager-test
$ cd secret-manager-test
$ npm init -y
$ npm install @google-cloud/secret-manager 
$ touch index.js
index.js
const {SecretManagerServiceClient} = require('@google-cloud/secret-manager');
const client = new SecretManagerServiceClient();

async function accessSecretVersion() {
  const [version] = await client.accessSecretVersion({
    // バージョンは'latest'で最新バージョンを参照することも可能
    name: 'projects/{my-project}/secrets/TEST_API_KEY/versions/1',
  });

  const payload = version.payload.data.toString('utf8');

  console.info(`Payload: ${payload}`);
}

accessSecretVersion();

実行するとシークレット作成時に定義した値が表示されます。

実行
$ node index.js
Payload: this is secret key

解決できず

現状は「Secret Manager のシークレット アクセサー」を無条件で付与しているため
プロジェクト内で定義されているすべてのシークレットにアクセスできてしまいます。

権限付与時に条件を絞ることもできますが、うまく設定することができず…。

まとめ

簡単に使うことはできましたが
このままではセキュリティ上本番では使い難いので、もう少し検証が必要です。

10
9
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
10
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?