このドキュメントでは、Cloud FTP ユーザーのサービス アカウントを更新する方法について説明します。サービス アカウントは、ユーザーに代わって Cloud Storage リソースにアクセスします。
ユーザーのサービス アカウントを更新する手順の概要は次のとおりです。
- 適切な IAM ロールでサービス アカウントを構成します。
- ユーザーに関連付けられているサービス アカウントを更新します。
ユーザーごとに専用のサービス アカウントを使用すると、ユーザーごとに SFTP アクセスを個別に管理できます。
必要なロール
SFTP ユーザーを更新するために必要な権限を取得するには、プロジェクトに対するFTP 管理者 (roles/ftp.admin)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。
この事前定義ロールには、SFTP ユーザーの更新に必要な
ftp.users.update
権限が含まれています。
カスタムロールや他の事前定義ロールを使用して、この権限を取得することもできます。
サービス アカウントの構成
サービス アカウントが存在しない場合は、ユーザーのサービス アカウントを作成します。
gcloud iam service-accounts create USERNAME-sa \ --description="USERNAME SFTP Service Account" \ --display-name="USERNAME SFTP Service Account"
USERNAMEは、SFTP ユーザーの一意のユーザー名に置き換えます。ユーザー名は英小文字で始まり、英小文字、数字、ハイフンを含めることができます。成功すると、
Created service account [example-userid-sa]のようなメッセージが表示されます。サービス アカウント ユーザー(
roles/iam.serviceAccountUser)ロールを自分に付与します。gcloud iam service-accounts add-iam-policy-binding USERNAME-sa@PROJECT_ID.iam.gserviceaccount.com \ --member="user:ADMINISTRATOR_EMAIL" \ --role="roles/iam.serviceAccountUser"
ADMINISTRATOR_EMAILは、SFTP ユーザーを更新するプリンシパルのメールアドレスに置き換えます。アプリケーションではなくユーザーを更新する場合は、この値は にアクセスするために使用するメールアドレスです Google Cloud。成功すると、次のようなメッセージが表示されます。
Updated IAM policy for serviceAccount [example-userid-sa@example-project.iam.gserviceaccount.com]. bindings: - members: - user:admin@example.com role: roles/iam.serviceAccountUser etag: BwZJk7OiSzw= version: 1バケットにアクセスするために必要な IAM ロールをユーザーのサービス アカウントに付与します。
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member="serviceAccount:USERNAME-sa@PROJECT_ID.iam.gserviceaccount.com" \ --role="ROLE"
ROLEは、次のいずれかの IAM ロールに置き換えます。- 読み取り専用アクセス権の場合は、
roles/storage.objectViewerロールを使用します。 - 読み取り / 書き込みアクセス権の場合は、
roles/storage.objectAdminロールを使用します。
ユーザーがアクセスする必要があるバケットごとに、この手順を繰り返します。
- 読み取り専用アクセス権の場合は、
Cloud FTP サービス エージェントがユーザーのサービス アカウントのトークンを生成できるようにします。
SFTP サーバーのサービス エージェントのメールアドレスを取得します。 手順については、 サーバーの詳細を取得するをご覧ください。
Cloud FTP サービス エージェントを承認します。
gcloud iam service-accounts add-iam-policy-binding USERNAME-sa@PROJECT_ID.iam.gserviceaccount.com \ --member="serviceAccount:SERVICE_AGENT_EMAIL" \ --role="roles/iam.serviceAccountTokenCreator"
SERVICE_AGENT_EMAILは、サービス エージェントのメールアドレスに置き換えます。
次に、ユーザーのサービス アカウントを更新します。
ユーザーのサービス アカウントを更新する
gcloud
SFTP ユーザーに関連付けられているサービス アカウントを更新するには、
gcloud alpha storage ftp users update コマンドを実行します。
後述のコマンドデータを使用する前に、 次のように置き換えます。
- USERNAME: SFTP ユーザーのユーザー名。
- LOCATION_ID:サーバーのロケーション(
us-west1など)。 - SERVER_ID: サーバー ID。
- SERVICE_ACCOUNT: ユーザーのサービス アカウント。例:
username-sa@example-project.iam.gserviceaccount.com.
次のコマンドを実行します。
Linux、macOS、Cloud Shell
gcloud alpha storage ftp users update USERNAME --location=LOCATION_ID \ --server=SERVER_ID --customer-service-account=SERVICE_ACCOUNT
Windows(PowerShell)
gcloud alpha storage ftp users update USERNAME --location=LOCATION_ID ` --server=SERVER_ID --customer-service-account=SERVICE_ACCOUNT
Windows(cmd.exe)
gcloud alpha storage ftp users update USERNAME --location=LOCATION_ID ^ --server=SERVER_ID --customer-service-account=SERVICE_ACCOUNT
REST
SFTP ユーザーに関連付けられているサービス アカウントを更新するには、
servers.users.patch メソッドを使用します。
updateMask クエリ パラメータに customerServiceAccount フィールドを指定します。
リクエストデータを使用する前に、 次のように置き換えます。
- PROJECT_ID: サーバーの Google Cloud プロジェクト ID。
- LOCATION_ID:サーバーのロケーション(
us-west1など)。 - SERVER_ID: サーバー ID。
- USERNAME: SFTP ユーザーのユーザー名。
- SERVICE_ACCOUNT: ユーザーのサービス アカウント。例:
username-sa@example-project.iam.gserviceaccount.com.
HTTP メソッドと URL:
PATCH https://ftp.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/servers/SERVER_ID/users/USERNAME?updateMask=customerServiceAccount
リクエストの本文(JSON):
{
"customerServiceAccount": "SERVICE_ACCOUNT"
}
リクエストを送信するには、次のいずれかのオプションを展開します。
レスポンスで 長時間実行オペレーションを識別できます。 ユーザーが更新されるまでに数秒かかります。