Blog

So finden Sie die am wenigsten privilegierte IAM-Rolle in Google Cloud Platform

Mark van Holsteijn

Aktualisiert Oktober 16, 2025
3 Minuten

In diesem Blog zeige ich Ihnen, wie Sie die am wenigsten privilegierte IAM-Rolle in Google Cloud Platform finden, um eine bestimmte Aufgabe auszuführen. Das Prinzip der geringsten Privilegien besagt, dass ein Nutzer oder ein Programm die geringste Menge an Berechtigungen erhalten sollte, die zur Ausführung seiner/ihrer Funktion erforderlich ist. In Google Cloud Platform werden Berechtigungen in einer Rolle gruppiert. Wenn Sie einem Nutzer die Rolle zuweisen, erhält er alle damit verbundenen Berechtigungen. Eine Rolle enthält also eine oder mehrere Berechtigungen. Die vordefinierten Rollennamen von Google folgen dem Format , zum Beispiel . Berechtigungen hingegen haben das Format <servicename>.<resource-type>.<operation>, z.B. compute.disk.delete.

Finden Sie alle relevanten IAM-Rollen

Nehmen wir also an, Sie möchten eine Compute Disk löschen. Um alle verfügbaren Rollen zu finden, geben Sie ein:

ROLES=$(gcloud iam roles list 
  --filter "name ~ roles/compute.*" 
  --format 'value(name)')

Dies ergibt mehr als zwanzig verschiedene vordefinierte Rollen:

$ echo $ROLES
roles/compute.admin
roles/compute.imageUser
roles/compute.instanceAdmin
roles/compute.instanceAdmin.v1
...
roles/compute.storageAdmin
roles/compute.viewer
roles/compute.xpnAdmin

Finden Sie alle anwendbaren IAM-Rollen

Um alle anwendbaren IAM-Rollen mit der Berechtigung compute.disk.delete zu finden, geben Sie ein:

DELETE_ROLES=$(for role in $ROLES; do
    gcloud iam roles describe $role  --format json | 
      jq -r 'select(
               .includedPermissions[] | . == "compute.disks.delete"
              ) | .name'
done)

Jetzt sind wir also auf vier Rollen reduziert!

echo $DELETE_ROLES
roles/compute.admin
roles/compute.instanceAdmin
roles/compute.instanceAdmin.v1
roles/compute.storageAdmin

Am wenigsten privilegierte IAM-Rolle finden

Um die IAM-Rolle mit den wenigsten Rechten zu finden, geben Sie ein:

for role in $DELETE_ROLES; do
    gcloud iam roles describe $role  --format json | 
    jq '{
         name: .name, 
         title: .title,
         description: .description,
         number_of_permissions : (.includedPermissions|length)
   }';
done | 
jq --slurp 'sort_by(.number_of_permissions)'

Wie Sie sehen können, ergeben sich daraus vier mögliche Rollen:

[
  {
    "name": "roles/compute.storageAdmin",
    "title": "Compute Storage Admin",
    "description": "Full control of Compute Engine storage resources.",
    "number_of_permissions": 77
  },
  {
    "name": "roles/compute.instanceAdmin",
    "title": "Compute Instance Admin (beta)",
    "description": "Full control of Compute Engine instance resources.",
    "number_of_permissions": 162
  },
  {
    "name": "roles/compute.instanceAdmin.v1",
    "title": "Compute Instance Admin (v1)",
    "description": "Full control of Compute Engine instances, instance groups, disks, snapshots, and images. Read access to all Compute Engine networking resources.",
    "number_of_permissions": 278
  },
  {
    "name": "roles/compute.admin",
    "title": "Compute Admin",
    "description": "Full control of all Compute Engine resources.",
    "number_of_permissions": 587
  }
]

roles/compute.storageAdmin ist eindeutig die am wenigsten privilegierte IAM-Rolle, wenn Sie einen Datenträger löschen müssen.

Fazit

Um die am wenigsten privilegierte IAM-Rolle auf Google Cloud Platform zu finden, um eine bestimmte Aufgabe auszuführen, können Sie die IAM-Rollendefinitions-API abfragen. Der gesamte Code ist auch als Bash-Skript verfügbar: gcp-least-privileged Foto von FLY:D auf Unsplash

Verfasst von

Mark van Holsteijn

Mark van Holsteijn is a senior software systems architect at Xebia Cloud-native solutions. He is passionate about removing waste in the software delivery process and keeping things clear and simple.

Contact

Let’s discuss how we can support your journey.