SFTP サーバーからユーザーを削除する

このドキュメントでは、Cloud FTP サーバーからユーザーを削除する方法について説明します。

必要なロール

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

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

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

SFTP ユーザーを削除する

gcloud

  1. ユーザーに代わって Cloud Storage リソースにアクセスするサービス アカウントを削除します。

    1. ユーザーのサービス アカウントのメールアドレスを取得します。たとえば、 USERNAME-sa@PROJECT_ID. のようにします。手順については、 ユーザーの詳細を取得するをご覧ください。

    2. サービス アカウントを削除します。

      gcloud iam service-accounts delete SERVICE_ACCOUNT

      SERVICE_ACCOUNT は、サービス アカウントのメールアドレスに置き換えます。

  2. SFTP サーバーからユーザーを削除するには、 gcloud alpha storage ftp users delete コマンドを実行します。

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

    • USERNAME: SFTP ユーザーのユーザー名。
    • LOCATION_ID:サーバーのロケーション(us-west1 など)。
    • SERVER_ID: サーバー ID。

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

    Linux、macOS、Cloud Shell

    gcloud alpha storage ftp users delete USERNAME --location=LOCATION_ID \
        --server=SERVER_ID

    Windows(PowerShell)

    gcloud alpha storage ftp users delete USERNAME --location=LOCATION_ID `
        --server=SERVER_ID

    Windows(cmd.exe)

    gcloud alpha storage ftp users delete USERNAME --location=LOCATION_ID ^
        --server=SERVER_ID
    ユーザーが削除されるまでに数秒かかります。

REST

  1. ユーザーに代わって Cloud Storage リソースにアクセスするサービス アカウントを削除します。

    1. ユーザーのサービス アカウントのメールアドレスを取得します。たとえば、 USERNAME-sa@PROJECT_ID. のようにします。手順については、 ユーザーの詳細を取得するをご覧ください。

    2. サービス アカウントを削除します。

      gcloud iam service-accounts delete SERVICE_ACCOUNT

      SERVICE_ACCOUNT は、サービス アカウントのメールアドレスに置き換えます。

  2. SFTP サーバーからユーザーを削除するには、 servers.users.delete メソッドを使用します。

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

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

    HTTP メソッドと URL:

    DELETE https://ftp.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/servers/SERVER_ID/users/USERNAME

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

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

クライアント ライブラリ

C#

Cloud FTP 用のクライアント ライブラリをインストールして使用する方法については、 Cloud FTP クライアント ライブラリをご覧ください。 詳細については、 Cloud FTP C# API リファレンス ドキュメントをご覧ください。

Cloud FTP に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、 ローカル開発環境の認証の設定をご覧ください。

using Google.Cloud.Ftp.V1;
using Google.LongRunning;
using Google.Protobuf.WellKnownTypes;
using System.Threading.Tasks;

public sealed partial class GeneratedCloudFtpClientSnippets
{
    /// <summary>Snippet for DeleteUserAsync</summary>
    /// <remarks>
    /// This snippet has been automatically generated and should be regarded as a code template only.
    /// It will require modifications to work:
    /// - It may require correct/in-range values for request initialization.
    /// - It may require specifying regional endpoints when creating the service client as shown in
    ///   https://cloud.google.com/dotnet/docs/reference/help/client-configuration#endpoint.
    /// </remarks>
    public async Task DeleteUserAsync()
    {
        // Create client
        CloudFtpClient cloudFtpClient = await CloudFtpClient.CreateAsync();
        // Initialize request argument(s)
        string name = "projects/[PROJECT]/locations/[LOCATION]/servers/[SERVER]/users/[USER]";
        // Make the request
        Operation<Empty, OperationMetadata> response = await cloudFtpClient.DeleteUserAsync(name);

        // Poll until the returned long-running operation is complete
        Operation<Empty, OperationMetadata> completedResponse = await response.PollUntilCompletedAsync();
        // Retrieve the operation result
        Empty result = completedResponse.Result;

        // Or get the name of the operation
        string operationName = response.Name;
        // This name can be stored, then the long-running operation retrieved later by name
        Operation<Empty, OperationMetadata> retrievedResponse = await cloudFtpClient.PollOnceDeleteUserAsync(operationName);
        // Check if the retrieved long-running operation has completed
        if (retrievedResponse.IsCompleted)
        {
            // If it has completed, then access the result
            Empty retrievedResult = retrievedResponse.Result;
        }
    }
}

Go

Cloud FTP 用のクライアント ライブラリをインストールして使用する方法については、 Cloud FTP クライアント ライブラリをご覧ください。 詳細については、 Cloud FTP Go API リファレンス ドキュメントをご覧ください。

Cloud FTP に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、 ローカル開発環境の認証の設定をご覧ください。


//go:build examples

package main

import (
	"context"

	ftp "cloud.google.com/go/ftp/apiv1"
	ftppb "cloud.google.com/go/ftp/apiv1/ftppb"
)

func main() {
	ctx := context.Background()
	// This snippet has been automatically generated and should be regarded as a code template only.
	// It will require modifications to work:
	// - It may require correct/in-range values for request initialization.
	// - It may require specifying regional endpoints when creating the service client as shown in:
	//   https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options
	c, err := ftp.NewCloudFtpRESTClient(ctx)
	if err != nil {
		// TODO: Handle error.
	}
	defer c.Close()

	req := &ftppb.DeleteUserRequest{
		// TODO: Fill request struct fields.
		// See https://pkg.go.dev/cloud.google.com/go/ftp/apiv1/ftppb#DeleteUserRequest.
	}
	op, err := c.DeleteUser(ctx, req)
	if err != nil {
		// TODO: Handle error.
	}

	err = op.Wait(ctx)
	if err != nil {
		// TODO: Handle error.
	}
}

Java

Cloud FTP 用のクライアント ライブラリをインストールして使用する方法については、 Cloud FTP クライアント ライブラリをご覧ください。 詳細については、 Cloud FTP Java API リファレンス ドキュメントをご覧ください。

Cloud FTP に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、 ローカル開発環境の認証の設定をご覧ください。

import com.google.api.core.ApiFuture;
import com.google.cloud.ftp.v1.CloudFtpClient;
import com.google.cloud.ftp.v1.DeleteUserRequest;
import com.google.cloud.ftp.v1.UserName;
import com.google.longrunning.Operation;

public class AsyncDeleteUser {

  public static void main(String[] args) throws Exception {
    asyncDeleteUser();
  }

  public static void asyncDeleteUser() throws Exception {
    // This snippet has been automatically generated and should be regarded as a code template only.
    // It will require modifications to work:
    // - It may require correct/in-range values for request initialization.
    // - It may require specifying regional endpoints when creating the service client as shown in
    // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
    try (CloudFtpClient cloudFtpClient = CloudFtpClient.create()) {
      DeleteUserRequest request =
          DeleteUserRequest.newBuilder()
              .setName(UserName.of("[PROJECT]", "[LOCATION]", "[SERVER]", "[USER]").toString())
              .setForce(true)
              .build();
      ApiFuture<Operation> future = cloudFtpClient.deleteUserCallable().futureCall(request);
      // Do something.
      future.get();
    }
  }
}

Node.js

Cloud FTP 用のクライアント ライブラリをインストールして使用する方法については、 Cloud FTP クライアント ライブラリをご覧ください。 詳細については、 Cloud FTP Node.js API リファレンス ドキュメントをご覧ください。

Cloud FTP に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、 ローカル開発環境の認証の設定をご覧ください。

/**
 * This snippet has been automatically generated and should be regarded as a code template only.
 * It will require modifications to work.
 * It may require correct/in-range values for request initialization.
 * TODO(developer): Uncomment these variables before running the sample.
 */
/**
 *  Required. Name of the resource
 */
// const name = 'abc123'
/**
 *  Optional. If set to true, the request will force the deletion of the User.
 */
// const force = true

// Imports the Ftp library
const {CloudFtpClient} = require('@google-cloud/ftp').v1;

// Instantiates a client
const ftpClient = new CloudFtpClient();

async function callDeleteUser() {
  // Construct request
  const request = {
    name,
  };

  // Run request
  const [operation] = await ftpClient.deleteUser(request);
  const [response] = await operation.promise();
  console.log(response);
}

callDeleteUser();

PHP

Cloud FTP 用のクライアント ライブラリをインストールして使用する方法については、 Cloud FTP クライアント ライブラリをご覧ください。 詳細については、 Cloud FTP PHP API リファレンス ドキュメントをご覧ください。

Cloud FTP に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、 ローカル開発環境の認証の設定をご覧ください。

use Google\ApiCore\ApiException;
use Google\ApiCore\OperationResponse;
use Google\Cloud\Ftp\V1\Client\CloudFtpClient;
use Google\Cloud\Ftp\V1\DeleteUserRequest;
use Google\Rpc\Status;

/**
 * Deletes a single User.
 *
 * @param string $formattedName Name of the resource
 *                              Please see {@see CloudFtpClient::userName()} for help formatting this field.
 */
function delete_user_sample(string $formattedName): void
{
    // Create a client.
    $cloudFtpClient = new CloudFtpClient();

    // Prepare the request message.
    $request = (new DeleteUserRequest())
        ->setName($formattedName);

    // Call the API and handle any network failures.
    try {
        /** @var OperationResponse $response */
        $response = $cloudFtpClient->deleteUser($request);
        $response->pollUntilComplete();

        if ($response->operationSucceeded()) {
            printf('Operation completed successfully.' . PHP_EOL);
        } else {
            /** @var Status $error */
            $error = $response->getError();
            printf('Operation failed with error data: %s' . PHP_EOL, $error->serializeToJsonString());
        }
    } catch (ApiException $ex) {
        printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage());
    }
}

/**
 * Helper to execute the sample.
 *
 * This sample has been automatically generated and should be regarded as a code
 * template only. It will require modifications to work:
 *  - It may require correct/in-range values for request initialization.
 *  - It may require specifying regional endpoints when creating the service client,
 *    please see the apiEndpoint client configuration option for more details.
 */
function callSample(): void
{
    $formattedName = CloudFtpClient::userName('[PROJECT]', '[LOCATION]', '[SERVER]', '[USER]');

    delete_user_sample($formattedName);
}

Python

Cloud FTP 用のクライアント ライブラリをインストールして使用する方法については、 Cloud FTP クライアント ライブラリをご覧ください。 詳細については、 Cloud FTP Python API リファレンス ドキュメントをご覧ください。

Cloud FTP に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、 ローカル開発環境の認証の設定をご覧ください。

# This snippet has been automatically generated and should be regarded as a
# code template only.
# It will require modifications to work:
# - It may require correct/in-range values for request initialization.
# - It may require specifying regional endpoints when creating the service
#   client as shown in:
#   https://googleapis.dev/python/google-api-core/latest/client_options.html
from google.cloud import ftp_v1


def sample_delete_user():
    # Create a client
    client = ftp_v1.CloudFtpClient()

    # Initialize request argument(s)
    request = ftp_v1.DeleteUserRequest(
        name="name_value",
    )

    # Make the request
    operation = client.delete_user(request=request)

    print("Waiting for operation to complete...")

    response = operation.result()

    # Handle the response
    print(response)

Ruby

Cloud FTP 用のクライアント ライブラリをインストールして使用する方法については、 Cloud FTP クライアント ライブラリをご覧ください。 詳細については、 Cloud FTP Ruby API リファレンス ドキュメントをご覧ください。

Cloud FTP に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、 ローカル開発環境の認証の設定をご覧ください。

require "google/cloud/ftp/v1"

##
# Snippet for the delete_user call in the CloudFtp service
#
# This snippet has been automatically generated and should be regarded as a code
# template only. It will require modifications to work:
# - It may require correct/in-range values for request initialization.
# - It may require specifying regional endpoints when creating the service
# client as shown in https://cloud.google.com/ruby/docs/reference.
#
# This is an auto-generated example demonstrating basic usage of
# Google::Cloud::Ftp::V1::CloudFtp::Rest::Client#delete_user.
#
def delete_user
  # Create a client object. The client can be reused for multiple calls.
  client = Google::Cloud::Ftp::V1::CloudFtp::Rest::Client.new

  # Create a request. To set request fields, pass in keyword arguments.
  request = Google::Cloud::Ftp::V1::DeleteUserRequest.new

  # Call the delete_user method.
  result = client.delete_user request

  # The returned object is of type Gapic::Operation. You can use it to
  # check the status of an operation, cancel it, or wait for results.
  # Here is how to wait for a response.
  result.wait_until_done! timeout: 60
  if result.response?
    p result.response
  else
    puts "No response received."
  end
end

次のステップ