Aggiornare i bucket per un utente SFTP

Questo documento mostra come aggiornare i bucket Cloud Storage per un utente Cloud FTP, inclusi i bucket a cui un utente può accedere e le autorizzazioni di cui dispone.

A livello generale, ecco i passaggi per aggiornare i bucket per un utente:

  1. Aggiorna i ruoli IAM per il account di servizio dell'utente.
  2. Mappa le directory dell'utente ai bucket aggiornati.

Prima di iniziare

  • Crea uno o più bucket Cloud Storage per archiviare i dati con cui l'utente lavorerà, se i bucket non esistono già esistono. Puoi concedere a un utente l'accesso a un massimo di 10 bucket.

Ruoli obbligatori

Per ottenere l'autorizzazione necessaria per aggiornare gli utenti SFTP, chiedi all'amministratore di concederti il ruolo IAM Amministratore FTP (roles/ftp.admin) nel progetto. Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Questo ruolo predefinito contiene l'autorizzazione ftp.users.update , necessaria per aggiornare gli utenti SFTP.

Potresti anche ottenere questa autorizzazione con ruoli personalizzati o altri ruoli predefiniti.

Aggiorna i ruoli IAM per il account di servizio di un utente

Se modifichi i bucket a cui un utente può accedere o se modifichi l'autorizzazione di un utente per una mappatura di directory esistente, devi aggiornare il account di servizio dell'utente con i ruoli IAM pertinenti. Procedi nel seguente modo:

  1. Ottieni l'indirizzo email del account di servizio dell'utente. Per i passaggi, consulta Ottieni i dettagli di un utente.

  2. Se aggiungi nuovi bucket alla mappatura di directory o aumenti l'accesso ai bucket esistenti:

    1. Concediti il ruolo Visualizzatore bucket Storage (roles/storage.bucketViewer) sul bucket, se non lo hai già:

      gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
          --member="user:ADMINISTRATOR_EMAIL" \
          --role="roles/storage.bucketViewer"

      Sostituisci quanto segue:

      • ADMINISTRATOR_EMAIL: l'indirizzo email della principale che sta creando l'utente SFTP. Se stai creando l' utente (anziché un'applicazione), questo valore è l'indirizzo email che utilizzi per accedere Google Cloud.

      • BUCKET_NAME: il nome del bucket.

    2. Concediti il ruolo Visualizzatore oggetti Storage (roles/storage.objectViewer) sul bucket, se non lo hai già:

      gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
          --member="user:ADMINISTRATOR_EMAIL" \
          --role="roles/storage.objectViewer"
    3. Concedi al account di servizio dell'utente i ruoli IAM necessari per accedere ai bucket:

      gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
        --member="serviceAccount:SERVICE_ACCOUNT" \
        --role="ROLE_TO_GRANT"

      Sostituisci quanto segue:

      • SERVICE_ACCOUNT: l'indirizzo email del account di servizio dell'utente.
      • ROLE_TO_GRANT: il ruolo IAM da concedere. Specifica uno dei seguenti ruoli:

        • Per l'accesso in sola lettura, utilizza il ruolo roles/storage.objectViewer.
        • Per l'accesso in lettura e scrittura, utilizza il ruolo roles/storage.objectAdmin.
    4. Ripeti i passaggi precedenti per ogni bucket a cui l'utente deve accedere.

  3. Se rimuovi i bucket dalla mappatura di directory o riduci l'accesso ai bucket esistenti, revoca l'accesso dal account di servizio dell'utente:

    gcloud storage buckets remove-iam-policy-binding gs://BUCKET_NAME \
      --member="serviceAccount:SERVICE_ACCOUNT" \
      --role="ROLE_TO_REVOKE"

    Sostituisci ROLE_TO_REVOKE con il ruolo IAM che vuoi revocare.

    Ripeti questo passaggio per ogni bucket e ruolo IAM a cui l'utente non deve più avere accesso.

Aggiorna i bucket di un utente

REST

Per aggiornare i bucket per un utente SFTP, utilizza il servers.users.patch metodo. Nel parametro di query updateMask, fornisci il campo storageDirectoryMappings.

Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:

  • PROJECT_ID: l'ID progetto del Google Cloud server.
  • LOCATION_ID: la località del server, ad esempio us-west1.
  • SERVER_ID: l'ID del server.
  • USERNAME: il nome utente dell'utente SFTP.
  • BUCKET_NAME: il nome di un bucket a cui l'utente SFTP ha accesso, ad esempio example-bucket. Ometti gs://.
  • (Facoltativo) BUCKET_PREFIX: il percorso di una cartella all'interno del bucket da impostare come directory principale per questa mappatura di directory. Se ometti questo valore, Cloud FTP utilizza la radice del bucket.
  • DIRECTORY: il percorso della directory di destinazione logica presentato all'utente SFTP. Ad esempio, /home/uploads. Se ometti questo valore, Cloud FTP imposta la directory di destinazione su /.

    Se mappi più bucket o cartelle, fornisci un percorso di directory univoco per ogni mappatura.

    Le directory logiche nidificate non sono supportate. Se fornisci più mappature per una directory, fornisci le directory in una struttura flat anziché in una struttura nidificata. Ad esempio, utilizza /dir1 e /dir2 anziché /dir1 e /dir1/dir2.

  • SFTP_PERMISSION: il livello di accesso alla directory. Per l'accesso in sola lettura, imposta questo valore su READ_ONLY. Per l'accesso in lettura e scrittura, imposta questo valore su READ_WRITE.

Per concedere a un utente l'accesso a più bucket, fornisci più mappature di bucket nell'elenco storageDirectoryMappings.

Metodo HTTP e URL:

PATCH https://ftp.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/servers/SERVER_ID/users/USERNAME?updateMask=storageDirectoryMappings

Corpo JSON della richiesta:

{
  "storageDirectoryMappings": [
    {
      "bucket": "BUCKET_NAME",
      "bucketPrefix": "BUCKET_PREFIX",
      "directory": "DIRECTORY",
      "permission": "SFTP_PERMISSION"
    }
  ]
}

Per inviare la richiesta, espandi una di queste opzioni:

La risposta identifica un'operazione a lunga esecuzione. L'aggiornamento dell'utente richiede alcuni secondi.

Se un utente ha una connessione SFTP attiva, potrebbe dover disconnettersi e poi riconnettersi affinché le impostazioni del bucket aggiornate diventino effettive.