Cloud Code で Secret を作成、管理する

Cloud Code の Secret Manager 統合を使用して Secret を作成、管理する方法について説明します。


このタスクを Cloud Shell エディタで直接行う際のガイダンスについては、「ガイドを表示」をクリックしてください。

ガイドを表示


始める前に

  1. In the Google Cloud console, go to the project selector page.

    Go to project selector

  2. Select or create a Google Cloud project.

  3. Cloud Run サービスを作成する

    Cloud Run サービスと Secret を作成する環境として Cloud Shell エディタを使用します。このエディタには、クラウド開発に必要なツールがプリロードされています。

    サービスを作成するには:

    1. Cloud Code のステータスバーで、アクティブなプロジェクト名をクリックします。

      ステータスバーでアクティブなプロジェクト名

    2. 表示されたクイック選択メニューで、[新規アプリケーション] をクリックし、[Cloud Run アプリケーション] をクリックします。

    3. Cloud Run サンプルのリストから、[Python (Flask): Cloud Run] を選択します。

    4. サンプルのフォルダを選択して、[新規アプリケーションを作成] をクリックします。

    Cloud Shell エディタが新しいワークスペースにサービスを読み込んだら、エクスプローラ ビューでそのファイルを表示します。

    シークレットを作成する

    Secret Manager では、Secret をバイナリ blob またはテキスト文字列として保存、管理、アクセスできます。さらに、Secret を管理するため、仮想マシンやオペレーティング サービスに対処する必要はありません。

    Cloud Code の Secret Manager 統合を使用して Secret を作成するには:

    1. [Secret Manager] をクリックして、読み込まれるまで待ちます。
    2. Cloud Shell に Google Cloud API の呼び出しを認可するよう求められたら、[承認] をクリックします。
    3. 追加 [Secretを作成] をクリックします。
    4. プロンプトが表示されたら、プルダウン セレクタから Google Cloud プロジェクトを選択します。
    5. プロンプトが表示されたら、Secret Manager API を有効にします。
    6. 表示される [Secret Manager - Create Secret] タブで、[名前] フィールドに次のように入力します。

      my-secret
      
    7. [シークレットの値] フィールドに、次のように入力します。

      Hello secret!
      
    8. [シークレットの作成] をクリックすると、Secret が正常に作成されたというメッセージが表示されます。

    コードに Secret を追加する

    Secret は、実行時にアプリケーションが必要とする構成情報(データベース パスワード、API キー、TLS 証明書など)を保存するのに保存するのに便利です。

    コードに Secret を追加するには、

    1. [Cloud API] ビューを開き、[Secret Manager API] を選択します。

      見出しとして [Secret Manager API] が表示される Google Cloud API の詳細タブが開きます。

    2. [クライアント ライブラリのインストール] セクションで [Python] タブをクリックし、play_arrow [ターミナルで再生] をクリックします。これにより、google-cloud-secret-manager クライアント ライブラリがインストールされます。

    3. requirements.txt を開き、ファイルの末尾に次の行を追加します。

      google-cloud-secret-manager==2.1.0
      

      変更内容は自動的に保存されます。

    4. Secret の最新の値を取得するには、app.py を開き、hello 関数の後に、次の関数をコピーして貼り付けます。

      def access_secret_version(secret_version_id):
          """Return the value of a secret's version"""
          from google.cloud import secretmanager
      
          # Create the Secret Manager client.
          client = secretmanager.SecretManagerServiceClient()
      
          # Access the secret version.
          response = client.access_secret_version(name=secret_version_id)
      
          # Return the decoded payload.
          return response.payload.data.decode('UTF-8')
      
      
    5. access_secret_version 関数を呼び出すには、メッセージ変数を次のものと置き換えます。

      message = access_secret_version("<SECRET_VERSION_ID>")
      
    6. まだ Secret Manager - Secret の作成タブが開いていたら、file_copy ID をコピーします。

      Secret のバージョンの ID を取得するには、[Secret Manager] > [SECRET_NAME] > [バージョン] に移動し、バージョンの上にポインタを置き、[リソース ID をコピー] をクリックします。

    7. バージョン ID を追加するには、プレースホルダ <SECRET_VERSION_ID> をコピーしたバージョン ID に置き換えます。

    Cloud Run エミュレータで実行する

    新しい Secret をテストするには、Cloud Run エミュレータで Cloud Run サービスをローカルで実行します。

    1. ステータスバーから [Cloud Code] メニューを起動します。
    2. サービスをビルドしてエミュレータにデプロイするには、[Run on Cloud Run Emulator] を選択します。
    3. 表示された [Run/Debug on Cloud Run Emulator] タブで [Run] をクリックします。
    4. 構成を初めて実行する場合、このプロセスには最長で 5 分ほどかかることがあります。アプリのビルドとデプロイの進捗状況が [Output] パネルに表示されます。

    5. アプリがビルドされたら、[Output] パネルに表示された localhost のリンクをクリックして、アプリを起動します。Secret の値は、成功の画像の下に表示されます。

    新しい Secret バージョンを表示して作成する

    Cloud Code の Secret Manager ビューでは、プロジェクトの Secret をすばやく確認でき、Secret を管理するアクションを利用できます。

    Secret バージョンの値の表示

    1. [Secret Manager] ビューをクリックします。
    2. クリックして Secret を展開します。
    3. [Versions] フォルダで、Secret の値を表示する番号付きのバージョンを右クリックし、[Show Version Value] を選択します。

    Secret バージョンは編集できません。Secret の値を更新するには、新しいバージョンを作成する必要があります。

    新しい Secret バージョンを作成する

    Secret の値は Secret バージョンに保存されます。Secret には複数のバージョンがあります。これは、Secret が変更された場合に役立ちます。Secret を新しいバージョンで更新する場合は、コードを更新する必要はありません。

    1. [Secret Manager] ビューをクリックします。
    2. Secret の名前を右クリックし、[Secret バージョンを作成] を選択します。
    3. 表示される [Secret Manager - Create Version] タブで、新しい値を入力し、[バージョンを作成] をクリックします。
    4. [Secret Manager - Secret の作成] タブが開いたら、file_copy の上部にある [コピー] をクリックして、ID をコピーします。
    5. 新しいバージョン ID を追加するには、app.py でメッセージ変数に表示される現在のバージョンを、コピーした新しいバージョン ID に置き換えます。

    コードで常に最新バージョンを使用する場合は、バージョン ID の末尾のバージョン番号を latest に置き換えます。

    Secret を表示して管理する

    Secret バージョンを無効化にする

    Secret バージョンは、作成後にデフォルトで有効になり、アクセスできます。無効にした Secret にはアクセスできませんが、いつでもアクセスを復元できます。

    Secret バージョンを無効にするには:

    1. [Cloud Code] をクリックし、[Secret Manager] セクションを展開します。
    2. クリックして Secret を展開します。
    3. [バージョン] フォルダで、無効にする番号付きのバージョンを右クリックします。
    4. [Disable Version] を選択します。

    シークレット バージョンの破棄

    シークレット バージョンを破棄すると、アクセスできなくなります。Secret バージョンの破棄は後から変更できません。

    1. [Cloud Code] をクリックし、[Secret Manager] セクションを展開します。
    2. クリックして Secret を展開します。
    3. [バージョン] フォルダで、破棄するバージョンを右クリックします。
    4. [Destroy Version] を選択します。

    クリーンアップ

    このクイックスタート用に作成したクラスタのみを削除するには:

    1. [Cloud Code] をクリックし、[Kubernetes] セクションを展開します。
    2. ポインタをクラスタ名に合わせて、open_in_new [Google Cloud コンソールで開く] をクリックします。
    3. [削除] をクリックし、[削除] をクリックします。

    プロジェクト(およびクラスタを含む関連リソース)を削除するには、次のようにします。

    1. Google Cloud コンソールの [プロジェクト] ページに移動します。

      プロジェクト ページに移動

    2. このクイックスタート用に作成したプロジェクトを選択し、[削除] をクリックします。

    3. プロジェクト ID を入力して確定し、[シャットダウン] をクリックします。

      プロジェクトがシャットダウンし、プロジェクト削除のスケジュールが決定されます。