Rivedere e applicare i consigli dei ruoli per i bucket Cloud Storage

Questa pagina spiega come visualizzare, comprendere e applicare i suggerimenti sui ruoli Cloud Storage per i bucket Cloud Storage. I suggerimenti sui ruoli ti aiutano ad applicare il principio del privilegio minimo assicurandoti che le entità dispongano solo delle autorizzazioni necessarie.

Prima di iniziare

Ruoli IAM obbligatori

Questa sezione descrive i ruoli e le autorizzazioni IAM necessari per lavorare con i suggerimenti sui ruoli a livello di bucket.

Visualizza i suggerimenti

Per ottenere le autorizzazioni necessarie per visualizzare i suggerimenti sui ruoli a livello di bucket, chiedi all'amministratore di concederti i seguenti ruoli IAM sul progetto:

  • Visualizzatore ruoli (roles/iam.roleViewer)
  • Visualizzatore motore per suggerimenti IAM (roles/recommender.iamViewer)
  • Amministratore spazio di archiviazione (roles/storage.admin)

Per ulteriori informazioni sulla concessione dei ruoli, consulta Gestire l'accesso.

Questi ruoli predefiniti contengono le autorizzazioni necessarie per visualizzare i suggerimenti sui ruoli a livello di bucket. Per visualizzare le autorizzazioni esatte richieste, espandi la sezione Autorizzazioni richieste:

Autorizzazioni obbligatorie

  • iam.roles.get
  • iam.roles.list
  • recommender.iamPolicyRecommendations.get
  • recommender.iamPolicyRecommendations.list
  • recommender.iamPolicyInsights.get
  • recommender.iamPolicyInsights.list
  • storage.buckets.getIamPolicy

Potresti anche essere in grado di ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.

Applicare e ignorare i consigli

Per ottenere le autorizzazioni necessarie per visualizzare, applicare e ignorare i suggerimenti dei ruoli a livello di bucket, chiedi all'amministratore di concederti i seguenti ruoli IAM sul progetto:

  • Visualizzatore ruoli (roles/iam.roleViewer)
  • Amministratore motore per suggerimenti IAM (roles/recommender.iamAdmin)
  • Amministratore spazio di archiviazione (roles/storage.admin)

Per ulteriori informazioni sulla concessione dei ruoli, consulta Gestire l'accesso.

Questi ruoli predefiniti contengono le autorizzazioni necessarie per visualizzare, applicare e ignorare i suggerimenti dei ruoli a livello di bucket. Per visualizzare le autorizzazioni esatte richieste, espandi la sezione Autorizzazioni richieste:

Autorizzazioni obbligatorie

  • iam.roles.get
  • iam.roles.list
  • recommender.iamPolicyRecommendations.get
  • recommender.iamPolicyRecommendations.list
  • recommender.iamPolicyInsights.get
  • recommender.iamPolicyInsights.list
  • recommender.iamPolicyLateralMovementInsights.get
  • recommender.iamPolicyLateralMovementInsights.list
  • recommender.iamPolicyRecommendations.update
  • storage.buckets.getIamPolicy
  • storage.buckets.setIamPolicy

Potresti anche essere in grado di ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.

Revisione e applicazione dei suggerimenti

Puoi esaminare e applicare i consigli dei ruoli a livello di bucket con l'interfaccia a riga di comando di Google Cloud e l'API motore per suggerimenti.

gcloud

Esamina i consigli visualizzati per te:

Per elencare i consigli a livello di bucket, esegui il comando gcloud recommender recommendations list, filtrando solo i suggerimenti relativi ai bucket di Cloud Storage.

gcloud recommender recommendations list \
    --location=LOCATION \
    --recommender=google.iam.policy.Recommender \
    --project=PROJECT_ID \
    --format=FORMAT \
    --filter="recommenderSubtype:REMOVE_ROLE_STORAGE_BUCKET OR recommenderSubtype:REPLACE_ROLE_STORAGE_BUCKET"

Sostituisci i seguenti valori:

  • LOCATION: l'area geografica in cui si trovano i bucket Cloud Storage, ad esempio us o us-central1.
  • PROJECT_ID: l'ID del progetto Google Cloud che contiene i bucket Cloud Storage. Gli ID progetto sono stringhe alfanumeriche, come my-project.
  • FORMAT: il formato della risposta. Utilizza json o yaml.

La risposta è simile all'esempio seguente. In questo esempio, tutti gli utenti autenticati (allAuthenticatedUsers) hanno il ruolo Lettore oggetti legacy Storage (roles/storage.legacyObjectReader) nel bucket mybucket. Tuttavia, questo ruolo non è stato utilizzato negli ultimi 90 giorni. Di conseguenza, il suggerimento di ruolo suggerisce di revocare il ruolo:

[
  {
    "associatedInsights": [
      {
        "insight": "projects/123456789012/locations/us/insightTypes/google.iam.policy.Insight/insights/7849add9-73c0-419e-b169-42b3671173fb"
      }
    ],
    "associatedResourceNames": [
      "//storage.googleapis.com/my-bucket"
    ],
    "content": {
      "operationGroups": [
        {
          "operations": [
            {
              "action": "remove",
              "path": "/iamPolicy/bindings/*/members/*",
              "pathFilters": {
                "/iamPolicy/bindings/*/condition/expression": "",
                "/iamPolicy/bindings/*/members/*": "allAuthenticatedUsers",
                "/iamPolicy/bindings/*/role": "roles/storage.legacyObjectReader"
              },
              "resource": "//storage.googleapis.com/my-bucket",
              "resourceType": "storage.googleapis.com/Bucket"
            }
          ]
        }
      ]
    },
    "description": "This role has not been used during the observation window.",
    "etag": "\"7caf4103d7669e12\"",
    "lastRefreshTime": "2022-05-24T07:00:00Z",
    "name": "projects/123456789012/locations/us/recommenders/google.iam.policy.Recommender/recommendations/fbc885b7-f0a8-47e6-90fe-6141aa2c4257",
    "primaryImpact": {
      "category": "SECURITY",
      "securityProjection": {
        "details": {
          "revokedIamPermissionsCount": 1
        }
      }
    },
    "priority": "P1",
    "recommenderSubtype": "REMOVE_ROLE_STORAGE_BUCKET",
    "stateInfo": {
      "state": "ACTIVE"
    }
  }
]

Esamina attentamente ogni suggerimento e considera come cambierà l'accesso del provider principale alle risorse di Google Cloud. Per informazioni su come rivedere i suggerimenti dall'interfaccia a riga di comando gcloud, consulta Esaminare i suggerimenti in questa pagina.

Per applicare un consiglio:

  1. Utilizza il comando gcloud recommender recommendations mark-claimed per modificare lo stato del consiglio in CLAIMED,, per evitare che il consiglio venga modificato mentre lo applichi:

    gcloud recommender recommendations mark-claimed \
        RECOMMENDATION_ID \
        --location=LOCATION \
        --recommender=google.iam.policy.Recommender \
        --project=PROJECT_ID \
        --format=FORMAT \
        --etag=ETAG \
        --state-metadata=STATE_METADATA
    

    Sostituisci i seguenti valori:

    • RECOMMENDATION_ID: l'identificatore univoco del suggerimento. Questo valore viene visualizzato alla fine del campo name nel consiglio. Ad esempio, se il campo name è projects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f, l'ID consiglio è fb927dc1-9695-4436-0000-f0f285007c0f.
    • LOCATION: l'area geografica in cui si trova il bucket di Cloud Storage, ad esempio us o us-central1.
    • PROJECT_ID: l'ID del progetto Google Cloud che contiene i tuoi bucket Cloud Storage. Gli ID progetto sono stringhe alfanumeriche come my-project.
    • FORMAT: il formato della risposta. Utilizza json o yaml.
    • ETAG: il valore del campo etag nel consiglio, ad esempio "dd0686e7136a4cbb". Tieni presente che questo valore può includere le virgolette.
    • STATE_METADATA: facoltativo. Coppie chiave-valore separate da virgole che contengono la scelta di metadati in merito al consiglio. Ad esempio, --state-metadata=reviewedBy=alice,priority=high. I metadati sostituiscono il campo stateInfo.stateMetadata nel consiglio.

    Se il comando ha esito positivo, la risposta mostra il suggerimento in uno stato CLAIMED, come mostrato nell'esempio seguente. Per chiarezza, l'esempio omette la maggior parte dei campi:

    ...
    "priority": "P1",
    "recommenderSubtype": "REMOVE_ROLE_STORAGE_BUCKET",
    "stateInfo": {
      "state": "CLAIMED"
    }
    ...
    
  2. Ottieni il criterio di autorizzazione per il bucket, quindi modificalo e impostalo in modo che rifletta il consiglio.

  3. Aggiorna lo stato del consiglio su SUCCEEDED, se hai potuto applicare il consiglio o su FAILED se non riesci ad applicarlo:

    gcloud recommender recommendations COMMAND \
        RECOMMENDATION_ID \
        --location=LOCATION \
        --recommender=google.iam.policy.Recommender \
        --project=PROJECT_ID \
        --format=FORMAT \
        --etag=ETAG \
        --state-metadata=STATE_METADATA
    

    Sostituisci i seguenti valori:

    • COMMAND: utilizza mark-succeeded se hai potuto applicare il consiglio o mark-failed se non riesci ad applicare il consiglio.
    • RECOMMENDATION_ID: l'identificatore univoco del suggerimento. Questo valore viene visualizzato alla fine del campo name nel consiglio. Ad esempio, se il campo name è projects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f, l'ID consiglio è fb927dc1-9695-4436-0000-f0f285007c0f.
    • LOCATION: l'area geografica in cui si trova il bucket di Cloud Storage, ad esempio us o us-central1.
    • PROJECT_ID: l'ID del progetto Google Cloud che contiene i tuoi bucket Cloud Storage. Gli ID progetto sono stringhe alfanumeriche come my-project.
    • FORMAT: il formato della risposta. Utilizza json o yaml.
    • ETAG: il valore del campo etag nel consiglio, ad esempio "dd0686e7136a4cbb". Tieni presente che questo valore può includere le virgolette.
    • STATE_METADATA: facoltativo. Coppie chiave-valore separate da virgole che contengono la scelta di metadati in merito al consiglio. Ad esempio, --state-metadata=reviewedBy=alice,priority=high. I metadati sostituiscono il campo stateInfo.stateMetadata nel consiglio.

    Ad esempio, se hai contrassegnato il consiglio come completato, la risposta mostra il consiglio in uno stato SUCCEEDED. Per chiarezza, in questo esempio mancano la maggior parte dei campi:

    ...
    "priority": "P1",
    "recommenderSubtype": "REMOVE_ROLE_STORAGE_BUCKET",
    "stateInfo": {
      "state": "SUCCEEDED"
    }
    ...
    

REST

Queste istruzioni presuppongono che tu abbia autenticato e impostato la variabile di ambiente GOOGLE_APPLICATION_CREDENTIALS.

Esamina i consigli visualizzati per te:

Per elencare tutti i suggerimenti disponibili per i bucket Cloud Storage, utilizza l'recommendations.list dell'API motore per suggerimenti.

Prima di utilizzare uno qualsiasi dei dati della richiesta, effettua le seguenti sostituzioni:

  • PROJECT_ID: l'ID del progetto Google Cloud contenente i bucket Cloud Storage. Gli ID progetto sono stringhe alfanumeriche, come my-project.
  • LOCATION: l'area geografica in cui si trovano i bucket Cloud Storage, ad esempio us o us-central1.
  • PAGE_SIZE: facoltativo. Il numero massimo di risultati da restituire da questa richiesta. Se non è specificato, il server determinerà il numero di risultati da restituire. Se il numero di suggerimenti è maggiore delle dimensioni della pagina, la risposta contiene un token di impaginazione che puoi utilizzare per recuperare la pagina dei risultati successiva.
  • PAGE_TOKEN: facoltativo. Il token di impaginazione ha restituito una risposta precedente da questo metodo. Se specificato, l'elenco dei consigli inizierà dove è terminata la richiesta precedente.

Metodo HTTP e URL:

GET https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/recommenders/google.iam.policy.Recommender/recommendations?filter=recommenderSubtype%20%3D%20REMOVE_ROLE_STORAGE_BUCKET%20OR%20recommenderSubtype%20%3D%20REPLACE_ROLE_STORAGE_BUCKET&pageSize=PAGE_SIZE&pageToken=PAGE_TOKEN

Per inviare la richiesta, espandi una delle seguenti opzioni:

La risposta è simile all'esempio seguente. In questo esempio, tutti gli utenti autenticati (allAuthenticatedUsers) hanno il ruolo Lettore oggetti Storage legacy (roles/storage.legacyObjectReader) nel bucket mybucket. Tuttavia, questo ruolo non è stato utilizzato negli ultimi 90 giorni. Di conseguenza, il suggerimento sul ruolo suggerisce di revocare il ruolo:

{
  "recommendations": [
    "name": "projects/123456789012/locations/us/recommenders/google.iam.policy.Recommender/recommendations/fbc885b7-f0a8-47e6-90fe-6141aa2c4257",
    "description": "This role has not been used during the observation window.",
    "lastRefreshTime": "2022-05-24T07:00:00Z",
    "primaryImpact": {
      "category": "SECURITY",
      "securityProjection": {
        "details": {
          "revokedIamPermissionsCount": 1
        }
      }
    },
    "content": {
      "operationGroups": [
        {
          "operations": [
            {
              "action": "remove",
              "resourceType": "storage.googleapis.com/Bucket",
              "resource": "//storage.googleapis.com/my-bucket",
              "path": "/iamPolicy/bindings/*/members/*",
              "pathFilters": {
                "/iamPolicy/bindings/*/condition/expression": "",
                "/iamPolicy/bindings/*/members/*": "allAuthenticatedUsers",
                "/iamPolicy/bindings/*/role": "roles/storage.legacyObjectReader"
              }
            }
          ]
        }
      ]
    },
    "stateInfo": {
      "state": "ACTIVE"
    },
    "etag": "\"7caf4103d7669e12\"",
    "recommenderSubtype": "REMOVE_ROLE_STORAGE_BUCKET",
    "associatedInsights": [
      {
        "insight": "projects/123456789012/locations/us/insightTypes/google.iam.policy.Insight/insights/7849add9-73c0-419e-b169-42b3671173fb"
      }
    ],
    "priority": "P1"
  ]
}

Esamina attentamente ogni suggerimento e considera come cambierà l'accesso del provider principale alle risorse di Google Cloud. Per informazioni su come esaminare i consigli dall'API REST, consulta Esaminare i consigli in questa pagina.

Per applicare un consiglio:

  1. Contrassegna il consiglio come CLAIMED:

    Per contrassegnare un consiglio come CLAIMED, che impedisce la modifica mentre lo applichi, utilizza il metodo recommendations.markClaimed dell'API motore per suggerimenti.

    Prima di utilizzare uno qualsiasi dei dati della richiesta, effettua le seguenti sostituzioni:

    • PROJECT_ID: l'ID del progetto Google Cloud contenente i bucket Cloud Storage. Gli ID progetto sono stringhe alfanumeriche, come my-project.
    • LOCATION: l'area geografica in cui si trova il bucket Cloud Storage, ad esempio us o us-central1.
    • RECOMMENDATION_ID: l'identificatore univoco del consiglio. Questo valore viene visualizzato alla fine del campo name nel consiglio. Ad esempio, se il campo name è projects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f, l'ID consiglio è fb927dc1-9695-4436-0000-f0f285007c0f.
    • ETAG: il valore del campo etag nel consiglio, come "dd0686e7136a4cbb". Utilizza le barre rovesciate per dare un'interpretazione letterale ai caratteri di escape, ad esempio "\"df7308cca9719dcc\"".
    • STATE_METADATA: facoltativo. Un oggetto contenente coppie chiave-valore con la scelta di metadati in merito al consiglio. Ad esempio, {"reviewedBy": "alice", "priority": "high"}. I metadati sostituiscono il campo stateInfo.stateMetadata nel consiglio.

    Metodo HTTP e URL:

    POST https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/recommenders/google.iam.policy.Recommender/recommendations/RECOMMENDATION_ID:markClaimed

    Corpo JSON richiesta:

    {
      "etag": "ETAG",
      "stateMetadata": {
        "STATE_METADATA"
      }
    }
    

    Per inviare la richiesta, espandi una delle seguenti opzioni:

    La risposta mostra il consiglio in uno stato CLAIMED, come mostrato nell'esempio seguente. Per chiarezza, in questo esempio vengono omessi la maggior parte dei campi:

    ...
    "stateInfo": {
      "state": "CLAIMED"
    },
    "etag": "\"7caf4103d7669e12\"",
    "recommenderSubtype": "REMOVE_ROLE_STORAGE_BUCKET",
    ...
    

  2. Recupera il criterio di autorizzazione per il progetto, quindi modifica il criterio di autorizzazione in modo che rifletta il consiglio.

  3. Aggiorna lo stato del consiglio su SUCCEEDED, se hai potuto applicare il consiglio o su FAILED se non riesci ad applicarlo:

    SUCCEEDED

    Per contrassegnare un consiglio come SUCCEEDED, che indica che puoi applicarlo, utilizza il metodo recommendations.markSucceeded dell'API motore per suggerimenti.

    Prima di utilizzare uno qualsiasi dei dati della richiesta, effettua le seguenti sostituzioni:

    • PROJECT_ID: l'ID del progetto Google Cloud contenente i bucket Cloud Storage. Gli ID progetto sono stringhe alfanumeriche, come my-project.
    • LOCATION: l'area geografica in cui si trova il bucket Cloud Storage, ad esempio us o us-central1.
    • RECOMMENDATION_ID: l'identificatore univoco del consiglio. Questo valore viene visualizzato alla fine del campo name nel consiglio. Ad esempio, se il campo name è projects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f, l'ID consiglio è fb927dc1-9695-4436-0000-f0f285007c0f.
    • ETAG: il valore del campo etag nel consiglio, come "dd0686e7136a4cbb". Utilizza le barre rovesciate per dare un'interpretazione letterale ai caratteri di escape, ad esempio "\"df7308cca9719dcc\"".
    • STATE_METADATA: facoltativo. Un oggetto contenente coppie chiave-valore con la scelta di metadati in merito al consiglio. Ad esempio, {"reviewedBy": "alice", "priority": "high"}. I metadati sostituiscono il campo stateInfo.stateMetadata nel consiglio.

    Metodo HTTP e URL:

    POST https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/recommenders/google.iam.policy.Recommender/recommendations/RECOMMENDATION_ID:markSucceeded

    Corpo JSON richiesta:

    {
      "etag": "ETAG",
      "stateMetadata": {
        "STATE_METADATA"
      }
    }
    

    Per inviare la richiesta, espandi una delle seguenti opzioni:

    La risposta mostra il consiglio in uno stato SUCCEEDED, come mostrato nell'esempio seguente. Per chiarezza, in questo esempio vengono omessi la maggior parte dei campi:

    ...
    "stateInfo": {
      "state": "SUCCEEDED"
    },
    "etag": "\"7caf4103d7669e12\"",
    "recommenderSubtype": "REMOVE_ROLE_STORAGE_BUCKET",
    ...
    

    FAILED

    Per contrassegnare un consiglio come FAILED, che indica che non è stato possibile applicarlo, utilizza il metodo recommendations.markFailed dell'API motore per suggerimenti.

    Prima di utilizzare uno qualsiasi dei dati della richiesta, effettua le seguenti sostituzioni:

    • PROJECT_ID: l'ID del progetto Google Cloud contenente i bucket Cloud Storage. Gli ID progetto sono stringhe alfanumeriche, come my-project.
    • LOCATION: l'area geografica in cui si trova il bucket Cloud Storage, ad esempio us o us-central1.
    • RECOMMENDATION_ID: l'identificatore univoco del consiglio. Questo valore viene visualizzato alla fine del campo name nel consiglio. Ad esempio, se il campo name è projects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f, l'ID consiglio è fb927dc1-9695-4436-0000-f0f285007c0f.
    • ETAG: il valore del campo etag nel consiglio, come "dd0686e7136a4cbb". Utilizza le barre rovesciate per dare un'interpretazione letterale ai caratteri di escape, ad esempio "\"df7308cca9719dcc\"".
    • STATE_METADATA: facoltativo. Un oggetto contenente coppie chiave-valore con la scelta di metadati in merito al consiglio. Ad esempio, {"reviewedBy": "alice", "priority": "high"}. I metadati sostituiscono il campo stateInfo.stateMetadata nel consiglio.

    Metodo HTTP e URL:

    POST https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/recommenders/google.iam.policy.Recommender/recommendations/RECOMMENDATION_ID:markFailed

    Corpo JSON richiesta:

    {
      "etag": "ETAG",
      "stateMetadata": {
        "STATE_METADATA"
      }
    }
    

    Per inviare la richiesta, espandi una delle seguenti opzioni:

    La risposta mostra il consiglio in uno stato FAILED, come mostrato nell'esempio seguente. Per chiarezza, in questo esempio vengono omessi la maggior parte dei campi:

    ...
    "stateInfo": {
      "state": "FAILED"
    },
    "etag": "\"7caf4103d7669e12\"",
    "recommenderSubtype": "REMOVE_ROLE_STORAGE_BUCKET",
    ...
    

Comprendere i consigli

Ogni consiglio include informazioni utili per capire il motivo per cui è stato fornito.

Per maggiori dettagli sui campi di un consiglio, consulta il riferimento Recommendation.

Per vedere in base all'utilizzo delle autorizzazioni basato su questo consiglio, consulta le informazioni sulle norme associate al consiglio. Questi dati sono elencati nel campo associatedInsights. Per visualizzare le informazioni sulle norme associate al consiglio:

  1. Copia l'ID dell'approfondimento associato. L'ID è quello che segue insights/ nel campo insight. Ad esempio, se il campo insight riporta projects/123456789012/locations/us/insightTypes/google.iam.policy.Insight/insights/7849add9-73c0-419e-b169-42b3671173fb, l'ID insight è 7849add9-73c0-419e-b169-42b3671173fb.
  2. Segui le istruzioni per ottenere un approfondimento sulle norme, utilizzando l'ID insight che hai copiato.

Passaggi successivi