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.
| Bronidentiteit | STACKIT-doel dat het concept schrijft | Wat bij u blijft |
|---|---|---|
| AWS IAM-gebruiker met een toegangssleutel en zonder console-login | Een serviceaccount, een serviceaccountsleutel en roltoewijzingen op projectniveau | De 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 profile | Een serviceaccount dat aan de server is gekoppeld, met roltoewijzingen | De rollen, en het recht om als het account op te treden wanneer de server wordt gekoppeld |
| AWS IAM-groep | Een groep van de identity provider; de rollen worden aan de leden toegewezen | Wie de leden zijn en welke rollen ze krijgen |
| Azure user-assigned managed identity | Alleen een serviceaccount; de roltoewijzingen worden aan een persoon overgelaten | Koppeling van resourcegroepen aan projecten, de code van elke consumer, de rollen |
| Google-serviceaccount met bucket- en projectbindingen | Een serviceaccount; de bindingen worden door een persoon beoordeeld | De 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.
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
}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.
resource "aws_iam_user" "ci" {
name = "ci-deploy"
}
resource "aws_iam_access_key" "ci" {
user = aws_iam_user.ci.name
}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.
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
}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.
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.
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.
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.
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.
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.
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
Hartelijk dank.
Uw verzoek is bij ons binnengekomen. Onze specialisten nemen contact met u op.