このドキュメントでは、Cloud FTP を使用して内部 SFTP サーバーを作成する方法について説明します。内部 SFTP サーバーには、Private Service Connect を使用して Virtual Private Cloud(VPC)ネットワーク内からのみアクセスできます。 ネットワーク内の従業員と内部関係者は、このサーバーを使用して Cloud Storage との間でファイルを安全に転送できます。
サーバーへの接続を許可するプロジェクトを指定します。必要に応じて、接続を拒否するプロジェクトを指定できます。
VPC の背景情報については、 VPC の概要をご覧ください。
インターネット経由でアクセスできる外部サーバーを作成する手順については、 外部 SFTP サーバーを作成するをご覧ください。 サーバーの作成後に、サーバーが外部か内部かを変更することはできません。
始める前に
gcloud
-
Google Cloud CLI をインストールします。
-
フェデレーション ID(連携 ID)を使用するように gcloud CLI を構成します。
詳細については、連携 ID を使用して gcloud CLI にログインするをご覧ください。
-
gcloud CLI を初期化するには、次のコマンドを実行します:
gcloud init -
プロジェクトを Google Cloud 作成または選択します。
プロジェクトを選択または作成するために必要なロール
- プロジェクトを選択する: プロジェクトの選択に特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトを選択できます。
-
プロジェクトを作成する: プロジェクトを作成するには、プロジェクト作成者ロール
(
roles/resourcemanager.projectCreator)が必要です。これにはresourcemanager.projects.create権限が含まれています。詳しくは、ロールを付与する方法をご覧ください。
-
プロジェクトを作成する Google Cloud :
gcloud projects create PROJECT_ID
PROJECT_IDは、作成する Google Cloud プロジェクトの名前に置き換えます。 -
作成した Google Cloud プロジェクトを選択します。
gcloud config set project PROJECT_ID
PROJECT_IDは、 Google Cloud プロジェクトの名前に置き換えます。
-
このガイドで既存のプロジェクトを使用する場合は、 このガイドを完了するために必要な権限があることを 確認します。新しいプロジェクトを作成した場合は、 必要な権限がすでに付与されています。
Cloud FTP API を有効にします。
API を有効にするために必要なロール
API を有効にするには、
serviceusage.services.enable権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を通じてこの権限が付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を通じてこの権限を取得できます。ロールを付与する方法をご覧ください。gcloud services enable ftp.googleapis.com
-
サーバーのユーザーに関する次の情報を収集します。
- サーバーへのアクセスを許可するプロジェクト ID またはプロジェクト番号のリスト。
- (省略可)サーバーへのアクセスを拒否するプロジェクト ID またはプロジェクト番号のリスト 。
必要なロール
SFTP サーバーの作成に必要な権限を取得するには、プロジェクトに対するCloud FTP 管理者 (roles/ftp.admin)IAM ロールの付与を管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。
この事前定義ロールには、SFTP サーバーの作成に必要な
ftp.servers.create
権限が含まれています。
カスタムロールや他の事前定義ロールを使用して、この権限を取得することもできます。
内部サーバーを作成する
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 分かかります。