• トップ
  • ブログ一覧
  • GCP Secret Managerを使ってみた
  • GCP Secret Managerを使ってみた

    たなゆー(エンジニア)たなゆー(エンジニア)
    2024.03.21

    IT技術

    GCPのSecret Managerを使用する機会があり、Googleが提供しているgoogle-cloud-php-secret-managerを使ったのでまとめていきます。

    google-cloud-php-secret-managerはphpのコードでSecret Managerを使えるようになるライブラリです。

    そもそもSecret Managerとは

    GCPが提供するSecret ManagerとはAPI キー、パスワード、証明書、その他の機密データを保存し必要に応じて保存した値を使用できるサービスです。

    保存できる最大サイズは64 KiBとなっており基本的には文字列しか保存できません。機密な画像やPDFなどのファイルをセキュアに保存したい場合はCloud Strageを使用しますがそれについてはまた別途紹介したいと思います。

    そしてそれをphpのコードでAPIを叩けるよう提供されているものがgoogle-cloud-php-secret-managerとなります。これを使用すると値の保存、取得などがAPIで行えるようになります。今回私はGCPに保存した値をAPIで取得する実装を行ったのでその方法を紹介したいと思います。(保存は自動化等する必要なかったのでコンソールから手動で保存しました。)

    実装方法

    ではまず初めにgoogle-cloud-php-secret-managerをインストールしていきましょう。

    以下のコマンドを叩くだけです。

    1$ composer require google/cloud-secret-manager

    これでインストールは完了したので、実際にコードを書いていきます。

    1   use Google\Cloud\SecretManager\V1\AccessSecretVersionRequest;
    2   use Google\Cloud\SecretManager\V1\Client\SecretManagerServiceClient;
    3
    4    public function getBundleParameters($projectId, $versionId, $secretId): string
    5    {
    6        $secreteManagerClient = new SecretManagerServiceClient();
    7
    8        $name = $secreteManagerClient->secretVersionName($projectId, $secretId, $versionId);
    9
    10        $request = AccessSecretVersionRequest::build($name);
    11
    12        $response = $secreteManagerClient->accessSecretVersion($request);
    13
    14        return $response->getPayload()->getData();
    15    }

    上記のコードはSecret Managerにアクセスして、そのシークレットの値を文字列として返すメソッドを作成しています。

    引数にはGCPのプロジェクトID、シークレットID、バージョンID(値を一つしか入れていなければ通常は '1' になります)を取ります。

    プロジェクトIDは使用するGCPのプロジェクトID、シークレットIDはSecret Managerに保存したシークレットの名前、バージョンIDは保存したシークレットバージョンの番号が入ります(番号ですが文字列型なので注意)。

    GCPの公式ドキュメントに書いてあるものとほぼ変わらないコードだし、中身も至ってシンプルですが、これでシークレットの値を取得できます。

    Secret Managerに限らずGCPのAPIはシンプルなものが多いで、非常に使いやすくて便利です。

    まとめ

    今回はphpでSecret Managerにアクセスしてシークレットの値を取得する方法についてまとめました。

    GCPが提供するAPIはシンプルなものが多いので比較的コードは簡単になります。

    ですので皆さんも外部APIだからと毛嫌いいせずどんどん使ってもらえるといいと思います。

    ライトコードでは、エンジニアを積極採用中!

    ライトコードでは、エンジニアを積極採用しています!社長と一杯しながらお話しする機会もご用意しております。そのほかカジュアル面談等もございますので、くわしくは採用情報をご確認ください。

    採用情報へ

    たなゆー(エンジニア)

    たなゆー(エンジニア)

    おすすめ記事

    エンジニア大募集中!

    ライトコードでは、エンジニアを積極採用中です。

    特に、WEBエンジニアとモバイルエンジニアは是非ご応募お待ちしております!

    また、フリーランスエンジニア様も大募集中です。

    background