このドキュメントでは、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は、サービス エージェントのメールアドレスに置き換えます。
次に、ユーザーのサービス アカウントを更新します。
ユーザーのサービス アカウントを更新する
REST
SFTP ユーザーに関連付けられているサービス アカウントを更新するには、
servers.users.patch メソッドを使用します。
updateMask クエリ パラメータで、customerServiceAccount フィールドを指定します。
リクエスト データを使用する前に、 次の置換を行います。
- PROJECT_ID: サーバーの Google Cloud プロジェクト ID。
- LOCATION_ID:サーバーのロケーション(
us-west1など)。 - SERVER_ID: サーバー ID。
- USERNAME: SFTP ユーザーのユーザー名。
HTTP メソッドと URL:
PATCH https://ftp.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/servers/SERVER_ID/users/USERNAME?updateMask=customerServiceAccount
リクエストの本文(JSON):
{
"customerServiceAccount": "USERNAME-sa@PROJECT_ID.iam.gserviceaccount.com"
}
リクエストを送信するには、次のいずれかのオプションを展開します。
レスポンスで長時間実行オペレーションを識別できます。ユーザーが更新されるまでに数秒かかります。