内部 SFTP サーバーを作成する

このドキュメントでは、Cloud FTP を使用して内部 SFTP サーバーを作成する方法について説明します。内部 SFTP サーバーには、Private Service Connect を使用して Virtual Private Cloud(VPC)ネットワーク内からのみアクセスできます。ネットワーク内の従業員と内部関係者は、サーバーを使用して Cloud Storage との間でファイルを安全に転送できます。

サーバーへの接続が許可されているプロジェクトを指定します。接続を拒否するプロジェクトを必要に応じて指定できます。

VPC の背景情報については、VPC の概要をご覧ください。

インターネット経由でアクセスできる外部サーバーを作成する手順については、外部 SFTP サーバーを作成するをご覧ください。サーバーの作成後に、サーバーが外部か内部かを変更することはできません。

始める前に

コンソール

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  2. If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Cloud FTP API, if it is not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the API

  5. サーバーのユーザーに関する次の情報を収集します。

    • サーバーへのアクセスが許可されているプロジェクト ID またはプロジェクト番号のリスト。
    • (省略可)サーバーへのアクセスが拒否されるプロジェクト ID またはプロジェクト番号のリスト。

gcloud

  1. Google Cloud CLI をインストールします。

  2. フェデレーション ID(連携 ID)を使用するように gcloud CLI を構成します。

    詳細については、連携 ID を使用して gcloud CLI にログインするをご覧ください。

  3. gcloud CLI を初期化するには、次のコマンドを実行します。

    gcloud init
  4. Google Cloud プロジェクトを作成または選択します。

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

    • プロジェクトを選択する: プロジェクトの選択に特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトであれば、どのプロジェクトでも選択できます。
    • プロジェクトを作成する: プロジェクトを作成するには、resourcemanager.projects.create 権限を含むプロジェクト作成者ロール(roles/resourcemanager.projectCreator)が必要です。詳しくは、ロールを付与する方法をご覧ください。
    • Google Cloud プロジェクトを作成します。

      gcloud projects create PROJECT_ID

      PROJECT_ID は、作成する Google Cloud プロジェクトの名前に置き換えます。

    • 作成した Google Cloud プロジェクトを選択します。

      gcloud config set project PROJECT_ID

      PROJECT_ID は、 Google Cloud プロジェクトの名前に置き換えます。

  5. このガイドで既存のプロジェクトを使用する場合は、このガイドを完了するために必要な権限があることを確認します。新しいプロジェクトを作成した場合は、必要な権限がすでに付与されています。

  6. Google Cloud プロジェクトに対して課金が有効になっていることを確認します。

  7. Cloud FTP API が有効になっていない場合は、有効にします。

    API を有効にするために必要なロール

    API を有効にするには、serviceusage.services.enable 権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を介してこの権限がすでに付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を介してこの権限を取得できます。ロールを付与する方法をご覧ください。

    gcloud services enable ftp.googleapis.com
  8. サーバーのユーザーに関する次の情報を収集します。

    • サーバーへのアクセスが許可されているプロジェクト ID またはプロジェクト番号のリスト。
    • (省略可)サーバーへのアクセスが拒否されるプロジェクト ID またはプロジェクト番号のリスト。

必要なロール

SFTP サーバーの作成に必要な権限を取得するには、プロジェクトに対する Cloud FTP 管理者 (roles/ftp.admin)IAM ロールの付与を管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。

この事前定義ロールには、SFTP サーバーの作成に必要な ftp.servers.create 権限が含まれています。

カスタムロールや他の事前定義ロールを使用して、この権限を取得することもできます。

内部サーバーを作成する

コンソール

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

    Cloud FTP に移動

  2. [サーバーを作成] をクリックします。

  3. [サーバー構成] タブで、サーバーの基本情報を入力します。

    1. [サーバー ID] フィールドに、サーバーの一意の ID を入力します。

    2. [リージョン] リストで、サーバーの Google Cloud ロケーションを選択します。

      データ転送速度を最大にするには、データを保存する Cloud Storage バケットと同じロケーションにサーバーを作成します。バケットのロケーションが Cloud FTP でサポートされていない場合は、最も近い利用可能なロケーションを選択します。

    3. (省略可)サーバーの表示名を入力します。

    4. [続行] をクリックします。

  4. [ネットワーキングとセキュリティ] タブで、サーバーの接続を構成します。

    1. [内部(VPC のみ)] を選択します。

    2. [承認済みプロジェクト] セクションで、Private Service Connect を使用してサーバーに接続できるコンシューマー プロジェクトを指定します。手順は次のとおりです。

      1. [プロジェクト] フィールドに、接続を許可するプロジェクトのプロジェクト ID または番号を入力します。例: example-allowed-project

      2. [接続上限] フィールドに、コンシューマー プロジェクトで作成できる Private Service Connect エンドポイントの最大数を入力します。値は 1 ~ 250 のエンドポイントにする必要があります。

      3. プロジェクトを追加するには、[承認済みプロジェクトを追加] をクリックして、前の手順を繰り返します。

    3. (省略可)プロジェクトがサーバーに接続できないようにするには、[不承認となったプロジェクト] セクションで [不承認となったプロジェクトを追加] をクリックします。サーバーへの接続が禁止されているコンシューマー プロジェクトのプロジェクト ID または番号を入力します。

      このリストに含まれるプロジェクトは、許可されたプロジェクトのリストに含まれていても、サーバーへのアクセスが拒否されます。

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

    サーバーの作成には約 10 分かかります。

gcloud

内部サーバーを作成するには、gcloud alpha storage ftp servers create コマンドを実行して --access-type=INTERNAL フラグを指定します。

後述のコマンドデータを使用する前に、次のように置き換えます。

  • SERVER_ID: サーバーの一意の ID。先頭は英小文字、末尾は英小文字または数字にする必要があります。英小文字、数字、ハイフンを使用できます。最大文字数は 30 文字です。
  • LOCATION_ID: サーバーの Google Cloud ロケーション(us-west1 など)。

    データ転送速度を最大にするには、データを保存する Cloud Storage バケットと同じロケーションにサーバーを作成します。バケットのロケーションが Cloud FTP でサポートされていない場合は、最も近い利用可能なロケーションを選択します。

  • PROJECT_TO_ALLOW: Private Service Connect を使用してサーバーに接続できるコンシューマー プロジェクトのプロジェクト ID または番号。例: example-allowed-project少なくとも 1 つのプロジェクトを指定する必要があります。

    最大 500 個のプロジェクトを許可できます。複数のプロジェクトとそれぞれの接続上限をカンマ区切りのリストで指定します。例: --consumer-accept-list=projectA=20,projectB=15

  • CONNECTION_LIMIT: コンシューマー プロジェクトで作成できる Private Service Connect エンドポイントの最大数。値は 1 ~ 250 エンドポイントにする必要があります。
  • (省略可)PROJECT_TO_REJECT: サーバーへの接続が禁止されているコンシューマー プロジェクトのプロジェクト ID または番号。例: example-rejected-project。このリストに含まれるプロジェクトは、許可されたプロジェクトのリストに含まれていても、サーバーへのアクセスが拒否されます。

    拒否できるプロジェクトは最大 64 個です。複数のプロジェクトをカンマ区切りのリストで指定します。

    プロジェクトを明示的に拒否しない場合は、--consumer-reject-list フラグを省略します。

次のコマンドを実行します。

Linux、macOS、Cloud Shell

gcloud alpha storage ftp servers create SERVER_ID --access-type=INTERNAL \
    --location=LOCATION_ID \
    --consumer-accept-list=PROJECT_TO_ALLOW=CONNECTION_LIMIT \
    --consumer-reject-list=PROJECT_TO_REJECT

Windows(PowerShell)

gcloud alpha storage ftp servers create SERVER_ID --access-type=INTERNAL `
    --location=LOCATION_ID `
    --consumer-accept-list=PROJECT_TO_ALLOW=CONNECTION_LIMIT `
    --consumer-reject-list=PROJECT_TO_REJECT

Windows(cmd.exe)

gcloud alpha storage ftp servers create SERVER_ID --access-type=INTERNAL ^
    --location=LOCATION_ID ^
    --consumer-accept-list=PROJECT_TO_ALLOW=CONNECTION_LIMIT ^
    --consumer-reject-list=PROJECT_TO_REJECT

サーバーの作成には約 10 分かかります。

REST

内部サーバーを作成するには、servers.create メソッドを使用し、internalConfig アクセス構成を指定します。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: サーバーの Google Cloud プロジェクト ID。
  • LOCATION_ID: サーバーの Google Cloud ロケーション(us-west1 など)。

    データ転送速度を最大にするには、データを保存する Cloud Storage バケットと同じロケーションにサーバーを作成します。バケットのロケーションが Cloud FTP でサポートされていない場合は、最も近い利用可能なロケーションを選択します。

  • SERVER_ID: サーバーの一意の ID。先頭は英小文字、末尾は英小文字または数字にする必要があります。英小文字、数字、ハイフンを使用できます。最大文字数は 30 文字です。
  • PROJECT_TO_ALLOW: Private Service Connect を使用してサーバーに接続できるコンシューマー プロジェクトのプロジェクト ID または番号。例: example-allowed-project少なくとも 1 つのプロジェクトを指定する必要があります。

    最大 500 個のプロジェクトを許可できます。

  • CONNECTION_LIMIT: コンシューマー プロジェクトで作成できる Private Service Connect エンドポイントの最大数。値は 1 ~ 250 エンドポイントにする必要があります。
  • (省略可)PROJECT_TO_REJECT: サーバーへの接続が禁止されているコンシューマー プロジェクトのプロジェクト ID または番号。例: example-rejected-project。このリストに含まれるプロジェクトは、許可されたプロジェクトのリストに含まれていても、サーバーへのアクセスが拒否されます。

    拒否できるプロジェクトは最大 64 個です。

    プロジェクトを明示的に拒否しない場合は、consumerRejectList オブジェクトを省略します。

HTTP メソッドと URL:

POST https://ftp.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/servers?serverId=SERVER_ID

リクエストの本文(JSON):

{
  "accessType": "INTERNAL",
  "internalConfig": {
    "consumerAcceptList": [
      {
        "project": "projects/PROJECT_TO_ALLOW",
        "connectionLimit": CONNECTION_LIMIT
      }
    ],
    "consumerRejectList": [
      {
        "project": "projects/PROJECT_TO_REJECT"
      }
    ]
  }
}

リクエストを送信するには、次のいずれかのオプションを展開します。

レスポンスで長時間実行オペレーションを識別できます。

サーバーの作成には約 10 分かかります。

次のステップ