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

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 <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.
Unsere Ideen
Weitere Blogs
Contact



