IDENTITEIT · AWS, AZURE, GOOGLE CLOUD → STACKIT

Migratie van cloud-IAM en identiteiten naar STACKIT

Beleidsregels migreren niet; identiteiten wel. Op STACKIT wordt een machine-identiteit uit AWS, Azure of Google Cloud een serviceaccount, logt een persoon in via de identity provider van uw organisatie en wordt wat een identiteit mag doen een roltoewijzing die u kiest, want StackToIT vertaalt geen cloudacties naar STACKIT-rollen. Drie kleine runs van 4 november 2026 laten zien wat de concepten schrijven, wat ze aan u overlaten en waarom u de toegangssleutels het eerst moet plannen.

Hoe elke bronidentiteit wordt gekoppeld

Eén rij per soort identiteit, uit drie runs: een AWS-omgeving van 11 resources en een omgeving van 4 resources voor elk van Azure en Google Cloud.

BronidentiteitSTACKIT-doel dat het concept schrijftWat bij u blijft
AWS IAM-gebruiker met een toegangssleutel en zonder console-loginEen serviceaccount, een serviceaccountsleutel en roltoewijzingen op projectniveauDe rollen, de levensduur van de sleutel en de overdracht van de nieuwe sleutel aan elke aanroeper van de oude
AWS IAM-rol van een EC2-instance, met het instance profileEen serviceaccount dat aan de server is gekoppeld, met roltoewijzingenDe rollen, en het recht om als het account op te treden wanneer de server wordt gekoppeld
AWS IAM-groepEen groep van de identity provider; de rollen worden aan de leden toegewezenWie de leden zijn en welke rollen ze krijgen
Azure user-assigned managed identityAlleen een serviceaccount; de roltoewijzingen worden aan een persoon overgelatenKoppeling van resourcegroepen aan projecten, de code van elke consumer, de rollen
Google-serviceaccount met bucket- en projectbindingenEen serviceaccount; de bindingen worden door een persoon beoordeeldDe rollen, en de code van workloads die de metadataserver gebruikten

In de AWS-run werden 11 resources 5 eenheden: het beleid, de koppelingen, het lidmaatschap, het instance profile en de toegangssleutel gaan op in de gebruiker, rol, groep en instance waartoe ze behoren. De concepten voor Azure en Google Cloud schrijven de principal en laten de rechten als open instellingen. Alleen het AWS-concept schreef resources voor roltoewijzing.

Een instancerol wordt een gekoppeld serviceaccount

Links: een EC2-rol en het bijbehorende instance profile zoals de AWS-bron ze declareert. Rechts: drie blokken van het STACKIT-concept in identity.tf, met de commentaarregels boven elk blok weggelaten.

Voorbeeldinvoermain.tf
resource "aws_iam_role" "app" {
  name = "reports-app"
  assume_role_policy = jsonencode({
    Version   = "2012-10-17"
    Statement = [{ Effect = "Allow", Action = "sts:AssumeRole", Principal = { Service = "ec2.amazonaws.com" } }]
  })
}

resource "aws_iam_instance_profile" "app" {
  name = "reports-app"
  role = aws_iam_role.app.name
}
STACKIT-Terraform van StackToITterraform/identity.tf
resource "stackit_service_account" "app" {
  project_id = var.project_id
  name       = "app"
}

resource "stackit_authorization_project_role_assignment" "app" {
  for_each    = toset(var.app_project_roles)
  resource_id = var.project_id
  role        = each.value
  subject     = stackit_service_account.app.email
}

resource "stackit_server_service_account_attach" "app" {
  project_id            = var.project_id
  region                = var.region
  server_id             = stackit_server.app.server_id
  service_account_email = stackit_service_account.app.email
}
  • De rollen zijn een variabele

    De roltoewijzing leest var.app_project_roles. De beschrijving van de variabele noemt wat het bronbeleid toestaat, s3:GetObject en s3:PutObject, en laat de keuze van de STACKIT-rollen aan u.

  • Het recht is ruimer dan het beleid

    Het AWS-beleid noemde één bucket. Een roltoewijzing op projectniveau geldt voor het hele project, en het concept zegt dat: gebruik bindingen per resource waar de STACKIT-dienst die biedt.

  • Het instance profile heeft geen object

    Het concept merkt op dat STACKIT geen instance profile kent: de server treedt rechtstreeks op als het gekoppelde serviceaccount, en de trust policy, sessieduur en permissions boundary van de rol worden niet overgenomen.

  • Twee valkuilen bij de koppelstap

    Koppelen vergt het recht om als het account op te treden. Het concept legt vast dat een koppeling ongeveer een halve seconde na het aanmaken van het account met 403 werd beantwoord en zo'n zeven seconden later met 201, dus probeer het opnieuw voordat u rechten verdenkt.

Een toegangssleutel wordt een serviceaccountsleutel

Links: de CI-gebruiker met zijn toegangssleutel. Rechts: het serviceaccount, zijn sleutel en de eerste roltoewijzing uit hetzelfde concept; commentaar boven elk blok is weggelaten.

Voorbeeldinvoermain.tf
resource "aws_iam_user" "ci" {
  name = "ci-deploy"
}

resource "aws_iam_access_key" "ci" {
  user = aws_iam_user.ci.name
}
STACKIT-Terraform van StackToITterraform/identity.tf
resource "stackit_service_account" "ci" {
  project_id = var.project_id
  name       = "ci"
}

resource "stackit_service_account_key" "ci" {
  project_id            = var.project_id
  service_account_email = stackit_service_account.ci.email
  ttl_days              = var.ci_key_ttl_days
}

resource "stackit_authorization_project_role_assignment" "ci" {
  count       = length([stackit_service_account.ci.email]) * length(var.ci_project_roles)
  resource_id = var.project_id
  role        = var.ci_project_roles[count.index % length(var.ci_project_roles)]
  subject     = [stackit_service_account.ci.email][floor(count.index / length(var.ci_project_roles))]
}
  • De sleutel heeft een levensduur

    ttl_days leest var.ci_key_ttl_days. De beschrijving van de variabele merkt op dat de AWS-toegangssleutels niet verlopen en dat een STACKIT-sleutel zonder ttl_days geldig blijft tot hij wordt verwijderd.

  • Het secret reist nooit mee

    De inloggegevens zijn de gevoelige json-uitvoer van de sleutel, door STACKIT aangemaakt. Het AWS-secret wordt nooit gelezen of overgenomen, en de nieuwe sleutel bereikt de aanroepers via een handmatige overdrachtsstap.

  • De oude sleutel blijft tot de GO

    De rollback van de overdracht bestaat uit het terugzetten van de aanroepers op de AWS-sleutel, die actief blijft tot de uitfasering van de gebruiker na de GO-beslissing.

  • Federatie is een vraag, geen resultaat

    Het bestand over de identiteitsovergang markeert de statische inloggegevens van deze gebruiker als waargenomen en workload identity federation als bewijs vereist. De run beweert nooit dat federatie de sleutel kan vervangen.

Azure: de identiteit verhuist, de roltoewijzing wacht op een persoon

Links: een user-assigned managed identity en de bijbehorende blob-roltoewijzing. Rechts: het enige blok dat het concept ervoor schrijft.

Voorbeeldinvoermain.tf
resource "azurerm_user_assigned_identity" "app" {
  name                = "id-reports-app"
  resource_group_name = azurerm_resource_group.app.name
  location            = azurerm_resource_group.app.location
}

resource "azurerm_role_assignment" "app_blob" {
  scope                = azurerm_storage_account.reports.id
  role_definition_name = "Storage Blob Data Contributor"
  principal_id         = azurerm_user_assigned_identity.app.principal_id
}
STACKIT-Terraform van StackToITterraform/identity.tf
resource "stackit_service_account" "app" {
  project_id = var.project_id
  name       = "app"
}
  • Drie open instellingen

    Het plan stelt een persoon vragen over de scope van de resourcegroep, de code zonder inloggegevens en de roltoewijzingen. Elke Azure-rol wordt handmatig opnieuw gekoppeld.

  • Codewijzigingen in elke consumer

    Code die een managed identity gebruikte, bevat meestal helemaal geen inloggegevens. Op STACKIT zijn serviceaccountgegevens of workload identity nodig, dus elke consumer verandert, niet alleen de infrastructuur.

  • Waar het Google Cloud-concept uitkomt

    Het serviceaccount wordt op dezelfde manier gekoppeld en het e-mailadres ervan verandert: verwijzingen naar het oude adres moeten worden bijgewerkt. De binding op projectniveau wordt door een persoon beoordeeld.

De stappen, in volgorde

Algemene praktijk, verbonden met de bestanden van een run.

  1. De identiteitsovergang lezen

    assurance/identity-transition.md noemt elke workload, de statische inloggegevens ervan en of de koppeling aan een server exact is. Het noemt ook wat het niet beoordeelt: privilege delta, break-glass-toegang en menselijke identiteit.

  2. Mensen en workloads scheiden

    Mensen loggen in via de identity provider van de organisatie en groepen worden daar opnieuw aangemaakt. Het concept somt de leden op in een variabele en wijst rollen toe per gebruiker, serviceaccount of client, niet per groep.

  3. De rollen kiezen

    Maak voor elke variabele, zoals app_project_roles, een lijst van de rollen die STACKIT op het project biedt en kies de smalste set die dekt wat het oude beleid toestond.

  4. Accounts aanmaken, daarna koppelen

    Pas de serviceaccounts toe en geef de principal die toepast het recht om als die accounts op te treden. Koppel daarna aan servers en probeer één keer opnieuw als het eerste antwoord 403 is.

  5. Sleutels overdragen of overstappen op federatie

    Geef elke aanroeper van een oude toegangssleutel zijn nieuwe inloggegevens, of zet een gefedereerde identity provider op die de OIDC-issuer van de aanroeper vertrouwt. STACKIT documenteert dat de issuer-URL exact moet overeenkomen met de iss-waarde van de tokens.

  6. De bronidentiteiten als laatste uitfaseren

    Het plan plaatst de uitfasering van gebruikers en rollen na de GO-beslissing, zodat de rollback van een overdracht een terugschakeling naar de oude sleutel blijft.

Beslissingen van de architect

  • Rollen per serviceaccount

    De concepten leiden nooit een STACKIT-rol af uit een cloudactie. Een persoon kiest, en de scope van het recht is een project, tenzij een dienst fijnere bindingen biedt.

  • Sleutel of federatie

    Een serviceaccountsleutel is een credential, en STACKIT waarschuwt dat een gelekte privésleutel alles blootstelt waartoe het account toegang heeft. Federatie levert kortlevende tokens zonder statische sleutels, maar vereist een OIDC-issuer.

  • Projectindeling

    STACKIT kent geen resourcegroep. Waar Azure rollen via een groep liet overerven, bepaalt u hoe de grenzen worden gekoppeld aan projecten, mappen en rollen.

  • Tokenflow

    STACKIT documenteert 16 december 2025 als de deprecatiedatum van toegangstokens voor serviceaccounts en biedt een gids voor de overstap van de tokenflow naar de sleutelflow. Bouw nieuwe automatisering op sleutels of federatie.

Vragen van securityteams

Kunnen mijn IAM-beleidsregels in STACKIT worden geïmporteerd?

Nee. De concepten schrijven roltoewijzingen met de rollen als variabele, omdat een AWS-actie niet één op één aan een STACKIT-rol gekoppeld kan worden. Het bronbeleid staat in de beschrijving van de variabele en een persoon vertaalt het.

Heeft een EC2 instance profile een equivalent op STACKIT?

De server treedt op als een gekoppeld serviceaccount. Het concept merkt op dat een pad voor metadatatokens in zijn tests van 8 en 9 oktober 2026 met een token antwoordde, terwijl een pad voor inloggegevens in EC2-stijl met HTTP 500 antwoordde. Code die inloggegevens uit een metadata-endpoint van een instance leest, verandert dus.

Kan ik de roltoewijzingen toepassen zoals ze er staan?

Ze zijn geschreven met een opt-in-functie van de STACKIT Terraform-provider die het concept in zijn providerblok inschakelt en waarvan de provider documenteert dat die waarschijnlijk verandert. Beoordeel ze en stel de rollen in voordat u ze toepast.

Wat gebeurt er met de AWS-toegangssleutel?

Die blijft werken tot u hem uitfaseert. Het plan plaatst de uitfasering na de GO-beslissing, zodat u tot dan aanroepers kunt terugzetten.

Bronnen

Uw volgende stap: STACKIT.

Vertel ons over uw omgeving, dan laten wij zien wat StackToIT daarvoor oplevert: doelarchitectuur, Terraform-artefacten en een gestructureerd migratieplan.

Laat uw gegevens achter, onze specialisten nemen contact met u op.

Liever zelf een e-mail sturen? connect@stacktoit.com

Wij gebruiken uw gegevens alleen om dit verzoek te beantwoorden en een mogelijke pilot te bespreken. Privacyverklaring