SFTP ユーザーのサービス アカウントを更新する

このドキュメントでは、Cloud FTP ユーザーのサービス アカウントを更新する方法について説明します。サービス アカウントは、ユーザーに代わって Cloud Storage リソースにアクセスします。

ユーザーのサービス アカウントを更新する手順の概要は次のとおりです。

  1. 適切な IAM ロールでサービス アカウントを構成します。
  2. ユーザーに関連付けられているサービス アカウントを更新します。

ユーザーごとに専用のサービス アカウントを使用すると、ユーザーごとに SFTP アクセスを個別に管理できます。

必要なロール

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

この事前定義ロールには、SFTP ユーザーの更新に必要な ftp.users.update 権限が含まれています。

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

サービス アカウントの構成

  1. サービス アカウントが存在しない場合は、ユーザーのサービス アカウントを作成します。

    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] のようなメッセージが表示されます。

  2. サービス アカウント ユーザー(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
    
  3. バケットにアクセスするために必要な 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 ロールを使用します。

    ユーザーがアクセスする必要があるバケットごとに、この手順を繰り返します。

  4. Cloud FTP サービス エージェントに、ユーザーのサービス アカウントのトークンを生成する権限を付与します。

    1. SFTP サーバーのサービス エージェントのメールアドレスを取得します。 手順については、 サーバーの詳細を取得するをご覧ください。

    2. 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"
}

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

レスポンスで長時間実行オペレーションを識別できます。ユーザーが更新されるまでに数秒かかります。

次のステップ