Google Cloud の権限と Cloud Storage のステップ バイ ステップ構成

このドキュメントでは、次のような Google Cloud の権限と Cloud Storage の構成手順について説明します。

  • 転送先の Cloud Storage バケットの準備。
  • データを保護する Cloud Key Management Service 鍵の準備。
  • Transfer Appliance チームに Cloud Storage バケットの構成データを提供する

準備

Transfer Appliance チームからのメールが Google Transfer Appliance の準備権限とストレージ という名であることを確認します。このメールの内容は次のとおりです。

  • 転送に必要なサービス アカウントの名前。

  • アプライアンスの構成に必要なセッション ID。

  • アカウントの構成後に入力するフォーム。

転送先の Cloud Storage バケットの準備

Cloud Storage にデータを保存するには、バケットを準備する必要があります。バケットは、Cloud Storage でデータを格納する基本的なコンテナです。

2 つのサービス アカウントを使用して、Transfer Appliance から、準備した転送先の Cloud Storage バケットにデータを転送します。サービス アカウントは、人ではなく、作業を行うためにアプリケーションで使用される特別なアカウントです。このガイドでは、サービス アカウントを使用することで、Transfer Appliance が Cloud Storage リソースを使用して、アプライアンスから Cloud Storage バケットにデータをコピーします。アプライアンスから Cloud Storage バケットにデータをコピーするためにこれらのアカウントが必要とするロールを付与します。

転送先の Cloud Storage バケットを準備するには、次の手順に従います。

  1. 「Google Transfer Appliance Preparing Bucket」 というタイトルのメールで、Transfer Appliance チームにより次のサービス アカウントが用意されます。

    • この転送に紐付けられたセッション サービス アカウント。次のような形式です。

      ta-SESSION_ID@transfer-appliance-zimbru.iam.gserviceaccount.com

      この例で、SESSION_ID は、この転送に固有のセッション ID です。

    • Transfer Service for On Premises Data サービスに紐付けられたサービス アカウント。アプライアンスから Cloud Storage バケットにデータを転送するために使用します。次のような形式です。

      project-TENANT_IDENTIFIER@storage-transfer-service.iam.gserviceaccount.com

      この例で、TENANT_IDENTIFIER は、この特定のプロジェクトに固有の生成番号です。

    次の手順で使用するため、上記サービス アカウントをメモします。

    サービス アカウントを使用すると、Transfer Appliance でユーザーに代わって Google Cloud リソースを操作し、アプライアンスから Cloud Storage にデータをコピーできます。アプライアンスから Cloud Storage バケットにデータをコピーするためにこれらのアカウントが必要とするロールを付与します。

  2. Cloud Storage バケットは Google Cloud プロジェクトに関連付けられています。選択するバケットは、アプライアンスの注文に使用したものと同じプロジェクト内に存在する必要があります。

    Cloud Storage バケットがない場合は、1 つ作成します。

    Google Cloud Console

    1. Google Cloud コンソールで Cloud Storage バケット のページを開きます。

      Cloud Storage バケットのページに移動します。

    2. [バケットを作成] をクリックして、バケット作成フォームを開きます。

    3. 次のバケット情報を入力します。各ステップは、[続行] をクリックして完了します。

      • バケット名の要件に従って、名前を指定します。

      • バケットのデフォルトのストレージ クラスを選択します。デフォルトのストレージ クラスは、バケットに対してアップロードされたすべてのオブジェクトにデフォルトで割り当てられます。次に、バケットデータの [ロケーション] を選択します。

      • [アクセス制御] モデルを選択して、バケットのオブジェクトに対するアクセスの制御方法を決定します。

      • 必要に応じて、バケットラベルを追加し、暗号化方法を選択できます。

      • バケットに保持ポリシーを設定しないでください。

    4. [完了] をクリックします。

    コマンドライン

    gsutil mb コマンドを使用します。

    gsutil mb -b on -l LOCATION -p PROJECT_ID gs://BUCKET_NAME
    

    この例では、次のようになります。

    バケットに保持ポリシーを設定しないでください。

  3. Transfer Appliance サービス アカウントに Cloud Storage バケットを使用する権限を付与するには、次のようにします。

    Google Cloud Console

    1. Google Cloud コンソールで、Cloud Storage の [バケット] ページに移動します。

      [バケット] に移動

    2. プリンシパルにロールが付与されるバケットに関連付けられた [バケット オーバーフロー] メニュー()をクリックします。

    3. [バケットの権限を編集] を選択します。

    4. [+ プロジェクトを追加] ボタンをクリックします。

    5. [新しいプリンシパル] フィールドに、次の ID を入力します。

      • セッション サービス アカウント。次のような形式です。

        ta-SESSION_ID@transfer-appliance-zimbru.iam.gserviceaccount.com

        この例で、SESSION_ID は、この転送に固有のセッション ID です。

      • Transfer Service for On Premises Data サービス エージェント。次のような形式です。

        project-TENANT_IDENTIFIER@storage-transfer-service.iam.gserviceaccount.com

        この例で、TENANT_IDENTIFIER は、この特定のプロジェクトに固有の生成番号です。

    6. [ロールを選択] プルダウン メニューから [ストレージ管理者] ロールを選択します。

      選択した役割と付与する権限の簡単な説明がパネルに表示されます。

    7. [保存] をクリックします。

    コマンドライン

    gsutil iam ch コマンドを使用します。

    gsutil iam ch \
    serviceAccount:ta-SESSION_ID@transfer-appliance-zimbru.iam.gserviceaccount.com:roles/storage.admin \
    serviceAccount:project-TENANT_IDENTIFIER@storage-transfer-service.iam.gserviceaccount.com:roles/storage.admin \
    gs://BUCKET_NAME
    

    この例では、

    • SESSION_ID: この転送に固有のセッション ID。
    • TENANT_IDENTIFIER: この特定のプロジェクトに固有の番号。
    • BUCKET_NAME: 作成するバケットの名前。

Cloud KMS 鍵の準備

アプライアンスを返送する前に、Transfer Appliance では、データを暗号化してアプライアンスを保護します。Transfer Appliance では、データの暗号化に Cloud Key Management Service(Cloud KMS)の公開を使用し、データの復号に秘密鍵を使用します。

転送先の Cloud Storage バケットの準備のセッション サービス アカウントを使用して、アプライアンスから Cloud Storage バケットにデータをアップロードします。

暗号鍵の管理には、次のオプションがあります。

  • Google が管理する暗号鍵Cloud KMS 鍵の作成と管理を Google にリクエストできます。この方法を使用する場合は、Google Cloud プロジェクトの構成が終了し、アプライアンスの受信の手順に進むことができます。

  • 暗号鍵を自分で作成して管理する。転送に使用する暗号鍵は、以下の手順で作成して管理します。Cloud KMS の非対称復号鍵を準備し、セッション サービス アカウントを鍵に追加します。セッション サービス アカウントは、非対称復号鍵を使用してデータの復号を行い、Cloud Storage にコピーします。

Cloud KMS 鍵を準備する手順は次のとおりです。

  1. Cloud Key Management Service のキーリングがない場合は、次の手順で作成します。

    Google Cloud Console

    1. Google Cloud コンソールで [暗号鍵] ページに移動します。

      [暗号鍵] ページに移動

    2. [キーリングを作成] をクリックします。

    3. [キーリングの名前] フィールドに、キーリングの名前を入力します。

    4. [鍵リングの場所] プルダウンから、"us-east1" などの場所を選択します。

    5. [作成] をクリックします。

    コマンドライン

    gcloud kms keyrings create KEY_RING --location=LOCATION --project=PROJECT_ID
    

    この例では、

    • LOCATION: キーリングの Cloud Key Management Service のロケーション。例: global
    • KEY_RING: キーリングの名前。
    • PROJECT_ID: ストレージ バケットが存在する Google Cloud プロジェクト ID。
  2. 次の手順を実行して、非対称復号鍵を作成します。

    Google Cloud Console

    1. Google Cloud コンソールで [暗号鍵] ページに移動します。

      [暗号鍵] ページに移動

    2. 鍵を作成するキーリングの名前をクリックします。

    3. [鍵を作成] をクリックします。

    4. [作成する鍵の種類] で [生成された鍵] を選択します。

    5. [鍵名] フィールドに、鍵の名前を入力します。

    6. [保護レベル] プルダウンをクリックし、[ソフトウェア] を選択します。

    7. [目的] プルダウンをクリックし、[非対称復号] を選択します。

    8. [アルゴリズム] プルダウンをクリックし、[4096 ビット RSA - OAEP パディング - SHA256 ダイジェスト] を選択します。

    9. [作成] をクリックします。

    コマンドライン

    次のコマンドを実行して、非対称復号鍵を作成します。

    gcloud kms keys create KEY --keyring=KEY_RING \
    --location=LOCATION --purpose=asymmetric-encryption \
    --default-algorithm=rsa-decrypt-oaep-4096-sha256 \
    --project=PROJECT_ID
    

    この例では、

    • KEY: Cloud Key Management Service 鍵の名前。 例: ta-key
    • KEY_RING: キーリングの名前。
    • LOCATION: キーリングの Cloud Key Management Service のロケーション。例: global
    • PROJECT_ID: ストレージ バケットが存在する Google Cloud プロジェクト ID。
  3. 次の手順に従い、セッション サービス アカウントをプリンシパルとして非対称鍵に追加します。

    Google Cloud Console

    1. Google Cloud コンソールで [暗号鍵] ページに移動します。

      [暗号鍵] ページに移動

    2. 非対称鍵を含むキーリングをクリックします。

    3. 使用する鍵のチェックボックスをオンにします。

    4. 情報パネルで [プリンシパルを追加] をクリックします。

      [プリンシパルを追加] が表示されます。

    5. [新しいプリンシパル] フィールドに、Transfer Appliance チームが提供するセッション サービス アカウントを入力します。次のような形式です。

      ta-SESSION_ID@transfer-appliance-zimbru.iam.gserviceaccount.com

      この例で、SESSION_ID は、この転送に固有のセッション ID です。

    6. [ロールを選択] フィールドに、[Cloud KMS 暗号鍵の公開鍵閲覧者] ロールを追加します。

    7. [別の役割を追加] をクリックします。

    8. [ロールを選択] フィールドに [クラウド KMS 暗号鍵の復号化] ロールを追加します。

    9. [保存] をクリックします。

    コマンドライン

    1. 次のコマンドを実行して、セッション サービス アカウントに roles/cloudkms.cryptoKeyDecrypter ロールを付与します。

      gcloud kms keys add-iam-policy-binding KEY \
      --keyring=KEY_RING --location=LOCATION \
      --member=serviceAccount:ta-SESSION_ID@transfer-appliance-zimbru.iam.gserviceaccount.com \
      --role=roles/cloudkms.cryptoKeyDecrypter
      

      この例では、次のようになります。

      • KEY: Cloud Key Management Service 鍵の名前。 例: ta-key
      • KEY_RING: キーリングの名前。
      • LOCATION: キーリングの Cloud Key Management Service のロケーション。例: global
      • SESSION_ID: この転送に固有のセッション ID。
    2. 次のコマンドを実行して、セッション サービス アカウントに roles/cloudkms.publicKeyViewer ロールを付与します。

      gcloud kms keys add-iam-policy-binding KEY \
      --keyring=KEY_RING --location=LOCATION \
      --member=serviceAccount:ta-SESSION_ID@transfer-appliance-zimbru.iam.gserviceaccount.com \
      --role=roles/cloudkms.publicKeyViewer
      

      この例では、次のようになります。

      • KEY: Cloud Key Management Service 鍵の名前。 例: ta-key
      • KEY_RING: キーリングの名前。
      • LOCATION: キーリングの Cloud Key Management Service のロケーション。例: global
      • SESSION_ID: この転送に固有のセッション ID。
  4. 次の手順を実行して、非対称鍵のパスを取得します。

    Google Cloud Console

    1. Google Cloud コンソールで暗号鍵のページに移動します。

      [暗号鍵] ページに移動

    2. 非対称復号鍵を含むキーリングをクリックします。

    3. 非対称復号鍵の名前をクリックします。

    4. 目的の鍵バージョンを選択して、その他アイコン()をクリックします。

    5. [リソース名をコピーする] をクリックします。

      鍵の形式の例を次に示します。

      projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY/cryptoKeyVersions/VERSION_NUMBER

      この例では、

      • PROJECT_ID: ストレージ バケットが存在する Google Cloud プロジェクト ID。
      • LOCATION: キーリングの Cloud Key Management Service のロケーション。
      • KEY_RING: キーリングの名前。
      • KEY: Cloud Key Management Service 鍵の名前。
      • VERSION_NUMBER: 鍵のバージョン番号。

      Transfer Appliance チームでは、バージョン番号を含む鍵のパス全体が必要とされるため、正しい鍵をデータに適用できます。

    コマンドライン

    次のコマンドを実行して、バージョン番号を含む非対称鍵のフルパスを一覧表示します。

    gcloud kms keys versions list --keyring=KEY_RING \
    --key=KEY --location=LOCATION \
    --project=PROJECT_ID
    

    この例では、

    • KEY_RING: キーリングの名前。
    • KEY: 非対称鍵の名前
    • LOCATION: キーリングの Google Cloud のロケーション。
    • PROJECT_ID: ストレージ バケットが存在する Google Cloud プロジェクト ID。

    次のレスポンスのサンプルは、返される出力に似ています。

    NAME STATE
    projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY/cryptoKeyVersions/VERSION_NUMBER
    ENABLED
    

    この例では、

    • PROJECT_ID: ストレージ バケットが存在する Google Cloud プロジェクト ID。
    • LOCATION: キーリングの Cloud Key Management Service のロケーション。
    • KEY_RING: キーリングの名前。
    • KEY: Cloud Key Management Service 鍵の名前。
    • VERSION_NUMBER: 鍵のバージョン番号。

    Transfer Appliance チームでは、NAME の下にある /cryptoKeyVersions/VERSION_NUMBER で終わる文字列が必要です(VERSION_NUMBER は鍵のバージョン番号)。

Transfer Appliance チームにバケット構成データを提供する

Cloud Storage バケットに関する情報を収集するため、「Google Transfer Appliance の準備権限とストレージ」というタイトルのメールを送信します。提供された情報を使用して、Transfer Appliance から Cloud Storage への転送を構成します。

そのメールからリンクされているフォームに、次の情報を入力します。

  • Google Cloud プロジェクト ID
  • [暗号化] で次のいずれかを選択します。
    • Google が管理する暗号鍵(Google に暗号鍵の管理を任せた場合)。
    • 顧客管理の暗号鍵: 独自の暗号鍵を管理することを選択した場合。[顧客管理の暗号鍵を選択] プルダウン メニューから目的の暗号鍵を選択します。
  • この転送に使用される Google Cloud Storage の転送先バケット名
  • 省略可: オブジェクト接頭辞。オブジェクト接頭辞がない場合、オブジェクトはファイルシステム上のファイル名の前にソースのパス(ルートパスは含まない)を付けて、Cloud Storage に転送されます。たとえば、次のファイルがあるとします。
    • /source_root_path/file1.txt
    • /source_root_path/dirA/file2.txt
    • /source_root_path/dirA/dirB/file3.txt
    この場合、Cloud Storage でのオブジェクト名は次のようになります。
    • file1.txt
    • dirA/file2.txt
    • dirA/dirB/file3.txt
    オブジェクト接頭辞は、Cloud Storage でオブジェクトの転送先名に追加されます。追加される位置は、転送先のバケット名の / 文字の後ろで、かつオブジェクトの転送元のパス名(ソースのルートパスは含まない)の前になります。これにより、他の転送ジョブから転送されたオブジェクトを区別できるようになります。

    次の表に、ソース オブジェクトのパスが /source_root_path/sub_folder_name/object_name の場合の、オブジェクト接頭辞と Cloud Storage 内のオブジェクト名の例を示します。
    接頭辞 転送先のオブジェクト名
    なし /destination_bucket/sub_folder_name/object_name
    prefix/ /destination_bucket/prefix/sub_folder_name/object_name

次のステップ

Transfer Appliance がネットワーク上で機能するように IP ネットワーク ポートを構成します。