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

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


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

ガイドを表示


始める前に

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

    プロジェクト セレクタに移動

  2. Google Cloud プロジェクトの選択または作成

    プロジェクトの選択または作成に必要なロール

    • プロジェクトを選択する: プロジェクトの選択に特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトであれば、どのプロジェクトでも選択できます。
    • プロジェクトを作成する: プロジェクトを作成するには、resourcemanager.projects.create 権限を含むプロジェクト作成者ロール(roles/resourcemanager.projectCreator)が必要です。ロールを付与する方法を確認する
  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==VERSION_NUMBER
      

      バージョン番号は、前の手順でインストールを実行した後にコンソールで確認できます。たとえば、コンソールに Successfully installed google-cloud-secret-manager-2.23.1 と表示された場合、

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

    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 を入力して確定し、[シャットダウン] をクリックします。

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