IAM i konta usług (service accounts)

IAM w Google Cloud odpowiada na pytanie "kto może co robić na którym zasobie". Model jest spójny w całej hierarchii, a szczególną rolę grają konta usług (service accounts) — to ich ZEUS używa do read-only dostępu.

Trzy elementy: member, role, resource

Polityka IAM to zbiór bindingów łączących:

  • member — kto (użytkownik, grupa, konto usługi, domena),
  • role — zestaw uprawnień,
  • resource — gdzie (organizacja/folder/projekt/zasób).
# Nadaj rolę Viewer użytkownikowi na projekcie
gcloud projects add-iam-policy-binding zeus-prod-4471 \
  --member="user:jan@professnet.pl" \
  --role="roles/viewer"

# Podejrzyj politykę IAM projektu
gcloud projects get-iam-policy zeus-prod-4471

Rodzaje ról

Typ roliPrzykładUwaga
Podstawowe (basic)roles/owner, roles/editor, roles/viewerzbyt szerokie — unikaj w prod
Predefiniowaneroles/compute.viewerwąskie, per usługa — preferowane
Customwłasny zestaw uprawnieńgdy predefiniowane nie pasują

Wskazówka: role podstawowe (editor, owner) dają ogromny zakres uprawnień w całym projekcie. ZEUS flaguje ich nadużywanie jako finding — least privilege oznacza role predefiniowane lub custom.

Konta usług (service accounts)

Service account to tożsamość dla aplikacji i automatyzacji (nie dla ludzi). Identyfikowana adresem typu nazwa@projekt.iam.gserviceaccount.com. Może przyjmować role tak jak użytkownik.

gcloud iam service-accounts create zeus-reader \
  --display-name="ZEUS read-only connector"

gcloud projects add-iam-policy-binding zeus-prod-4471 \
  --member="serviceAccount:zeus-reader@zeus-prod-4471.iam.gserviceaccount.com" \
  --role="roles/viewer"

Klucze kont usług — ryzyko

Konto usługi może mieć klucz JSON (długoterminowy sekret). To największe źródło incydentów w GCP — wyciekłe klucze service account dają trwały dostęp. Dlatego Google (i ZEUS) rekomendują Workload Identity zamiast kluczy:

# Liczba kluczy konta usługi (im mniej, tym lepiej — najlepiej zero)
gcloud iam service-accounts keys list \
  --iam-account=zeus-reader@zeus-prod-4471.iam.gserviceaccount.com

Jak to widzi ZEUS

ZEUS odczytuje pełne polityki IAM (na każdym poziomie hierarchii) i wszystkie konta usług. Szczególnie sprawdza: użycie ról podstawowych, konta usług z nadmiarowymi uprawnieniami oraz istnienie kluczy JSON — bo to materiał na poważny incydent. Sam ZEUS uwierzytelnia się bez klucza, przez Workload Identity Federation (szczegóły w lekcji 06), dając przykład dobrej praktyki.

W następnej lekcji: Compute Engine i Cloud Storage.