OCI IAM → STACKIT-TOEGANGSMODEL · ARCHITECTUUR

Migratie van OCI IAM, compartments en policies

OCI legt toegang vast als policy-statements over compartments; STACKIT legt het vast als rolbindingen van een subject op een organisatie, map of project. Er is geen document om te converteren, dus het werk is een herontwerp: compartments worden projecten of mappen, groepen en gebruikers worden subjects, statements worden rollen en dynamische groepen worden service accounts. StackToIT maakt een lijst van elke identiteitsresource in uw Terraform en laat elke daarvan aan de architect over, wat voor deze beslissing de juiste taakverdeling is.

Hoe de OCI-identiteitsobjecten overeenkomen

Elk OCI-object, het meest verwante STACKIT-concept en wat de run voor de demo-omgeving vastlegde. De STACKIT-kolom is ontwerpadvies uit de STACKIT-documentatie; de run noemt voor geen van deze objecten een doel.

OCI-objectMeest verwante STACKIT-conceptWat de run vastlegde
CompartmentEen project, of een map die projecten groepeert. Clouddiensten worden in projecten ingericht; mappen bevatten geen resources.Resourcetype niet in de catalogus: MANUAL_REVIEW, LOW, niets beoordeeld
GebruikerEen gebruikersaccount in de identity provider; een rolbinding noemt de gebruiker op e-mailadresMANUAL_REVIEW, LOW
GroepEen groep als subject van een rolbindingMANUAL_REVIEW, LOW
GroepslidmaatschapDe STACKIT IdP-pagina noemt SCIM-provisioning voor geautomatiseerde synchronisatie van gebruikers en groepen; hoe groepen binnen STACKIT worden beheerd, staat niet beschreven op de hier gebruikte pagina's, dus bevestig dat voordat u erop vertrouwtResourcetype niet in de catalogus: MANUAL_REVIEW, LOW
Policy-statementEen rolbinding: subject, rol en scopeMANUAL_REVIEW, LOW; statements genoemd als instelling die aan u is overgelaten
Dynamische groepEen service account dat aan de workload is toegewezenResourcetype niet in de catalogus: MANUAL_REVIEW, LOW

Aantallen uit de run: 10 eenheden, alle MANUAL_REVIEW met zekerheidsniveau LOW. Zes zijn typen die de catalogus kent als identiteitsresources; vier staan niet in de catalogus. De reden die de run voor de zes geeft, is dat OCI-policies op STACKIT geen tegenhanger op documentniveau hebben.

Een compartment, een policy en een dynamische groep, beoordeeld

Een Oracle Cloud-identiteitsomgeving van tien resources, geschreven voor deze pagina en door StackToIT beoordeeld op 4 november 2026. Links drie blokken van de invoer. Rechts de beslissing die voor elk is vastgelegd. assessment.json staat op één regel, dus het venster toont geselecteerde velden van elke eenheid, ingesprongen en genest zoals in het bestand, met ongewijzigde waarden. De invoerblokken staan in aparte vensters omdat ze in main.tf niet naast elkaar staan.

Voorbeeldinvoer, regels 16–21main.tf
resource "oci_identity_compartment" "prod" {
  compartment_id = var.tenancy_ocid
  name           = "prod"
  description    = "Production workloads"
}
Voorbeeldinvoer, regels 52–61main.tf
resource "oci_identity_policy" "platform" {
  compartment_id = oci_identity_compartment.prod.id
  name           = "platform-manage-infra"
  description    = "Platform team manages compute and network in prod"
  statements = [
    "Allow group platform-team to manage instance-family in compartment prod",
    "Allow group platform-team to manage virtual-network-family in compartment prod",
  ]
}
Voorbeeldinvoer, regels 72–77main.tf
resource "oci_identity_dynamic_group" "app_instances" {
  compartment_id = var.tenancy_ocid
  name           = "app-instances"
  description    = "Application instances in prod"
  matching_rule  = "ALL {instance.compartment.id = '${oci_identity_compartment.prod.id}'}"
}
StackToIT-assessmentassessment.json
[
  {
    "id": "oci_identity_compartment.prod",
    "result": {
      "class": "MANUAL_REVIEW",
      "confidence": "LOW",
      "reason": "oci_identity_compartment is not in the knowledge base catalogue; an architect has to decide the target. Nothing of this resource is assessed or drafted (unknown source type)."
    }
  },
  {
    "id": "oci_identity_policy.platform",
    "result": {
      "class": "MANUAL_REVIEW",
      "confidence": "LOW",
      "reason": "OCI policies have no document-level counterpart on STACKIT. Map people and workloads to STACKIT roles and service accounts."
    }
  },
  {
    "id": "oci_identity_dynamic_group.app_instances",
    "result": {
      "class": "MANUAL_REVIEW",
      "confidence": "LOW",
      "reason": "oci_identity_dynamic_group is not in the knowledge base catalogue; an architect has to decide the target. Nothing of this resource is assessed or drafted (unknown source type)."
    }
  }
]
  • Statements zijn tekst om te lezen

    De policy bevat twee statements die een groep en een compartment als strings noemen. De run noemt statements, name, description en compartment_id als instellingen die aan u zijn overgelaten en verplaatst niets; de statements één voor één lezen is het vertaalwerk.

  • Het compartment is onbekend voor de run

    oci_identity_compartment staat in geen enkele catalogus van de hier gebruikte build, dus de run beoordeelt er niets voor en zegt dat waar het ertoe doet: de dynamische groep draagt een waarschuwing dat het eraan gekoppelde compartment niet is beoordeeld.

  • Dynamische groepen zijn regels

    De matchingregel selecteert instances op compartment. Op STACKIT bestaat geen matchingregel: een service account wordt in een project aangemaakt en aan de workload toegewezen, dus de regel wordt een lijst met workloads die u moet uitrusten.

De volgorde die de run voorstelt

Eenheden staan in golven op basis van hun Terraform-verwijzingen. Let op wat een eenheid in golf 2 zet: de policy voor het platformteam hangt van het compartment af omdat compartment_id ernaar wijst. De databasepolicy noemt hetzelfde compartment alleen binnen een statementstring, dus die staat in golf 1.

Resultaat van StackToITmigration/technical-sequencing.md
## Wave 1 — 6 unit(s)

| Unit | Class | Target |
|---|---|---|
| `oci_identity_compartment.dev` | MANUAL_REVIEW / LOW | — |
| `oci_identity_compartment.prod` | MANUAL_REVIEW / LOW | — |
| `oci_identity_group.dba` | MANUAL_REVIEW / LOW | — |
| `oci_identity_group.platform` | MANUAL_REVIEW / LOW | — |
| `oci_identity_policy.dba` | MANUAL_REVIEW / LOW | — |
| `oci_identity_user.alice` | MANUAL_REVIEW / LOW | — |

## Wave 2 — 4 unit(s)

| Unit | Class | Target |
|---|---|---|
| `oci_identity_dynamic_group.app_instances` | MANUAL_REVIEW / LOW | — |
| `oci_identity_policy.app_secrets` | MANUAL_REVIEW / LOW | — |
| `oci_identity_policy.platform` | MANUAL_REVIEW / LOW | — |
| `oci_identity_user_group_membership.alice_platform` | MANUAL_REVIEW / LOW | — |
  • Verwijzingen bepalen de volgorde, namen niet

    Groepsnamen in statements zijn strings, dus de run koppelt een policy niet aan zijn groepen. Bouw de volgorde zelf: eerst de structuur, dan subjects, dan rolbindingen, dan workloads en hun service accounts.

  • Dit is geen planning

    De golven zijn een invoer voor uw plan. De handmatige stappen staan verzameld in execution/manual/actions.md. De gebruikers, groepen en policies liggen bij de Identity Architect; het pakket met de compartments, de dynamische groep en de namen van het groepslidmaatschap noemt geen eigenaar. Elke stap draagt een rollbackregel die zegt dat degene die de stap uitvoert, vastlegt hoe die ongedaan wordt gemaakt.

Vier manieren om de STACKIT-structuur op te zetten

De scope van een STACKIT-rolbinding is de organisatie, een map of een project. Een binding op één resource, zoals één bucket of één server, wordt niet ondersteund, en toegang is additief: een binding op een onderliggend niveau kan niet afnemen wat een bovenliggend niveau verleent.

OptieHoe het werktAfweging
Eén project per compartmentElk compartment, ook geneste, wordt een project; de boom wordt afgevlaktHet dichtst bij wat u nu hebt. Veel projecten, veel bindingen en netwerkverbindingen tussen projecten om te plannen. Projecten die een Network Area nodig hebben, moeten daarbinnen worden aangemaakt, omdat het label achteraf niet kan worden gewijzigd.
Eén project per omgevingProductie en ontwikkeling worden twee projecten; de oude compartmentnamen worden labels en naamconventiesWeinig bindingen en weinig onderhoud. Isolatie binnen een omgeving gaat verloren, omdat een rol voor het hele project geldt.
Mappen voor gebieden, projecten voor omgevingenEén map per bedrijfsonderdeel, daarbinnen een project per omgevingRollen die op een map worden verleend, gaan door naar de projecten daaronder, wat bij platformteams past. STACKIT ondersteunt één niveau mappen, dus diepere bomen kunnen niet worden nagebootst.
Aparte projecten alleen voor gevoelige dataEen gedeeld project voor gewone workloads en een project per dataklasse die een eigen toegangslijst nodig heeftEen klein aantal grenzen, elk met een reden. Vereist eerst een duidelijke dataclassificatie.

Geen enkele optie bootst een diepe compartmentboom na. Nest uw tenancy compartments over meerdere niveaus, dan hoort afvlakken bij de beslissing en is het geen verlies dat de migratie veroorzaakt.

Hoe u kiest

Loop deze vragen door met de eigenaars van elk compartment. De antwoorden bepalen de optie hierboven.

  1. 1. Wie moet van wie gescheiden worden?

    Maak een lijst van de groepen en de compartments die ze raken. Twee groepen die elkaars resources niet mogen zien, hebben twee projecten nodig, omdat een rol niet onder projectniveau kan worden beperkt.

  2. 2. Welke statements worden echt gebruikt?

    Loop elk statement langs. Een statement over een resourcefamilie, bijvoorbeeld instance-family of database-family, kunt u benaderen met een brede rol als editor op een project, of met een productrol. Een statement dat van een where-voorwaarde afhangt, bijvoorbeeld een MFA-controle, vergt een beslissing over waar die controle op STACKIT hoort te liggen.

  3. 3. Waar komen mensen vandaan?

    STACKIT-gebruikersaccounts melden zich aan met een wachtwoord of via federatie. De STACKIT IdP-documentatie bevat handleidingen voor generiek OIDC, SAML 2.0, Microsoft Entra ID en Google Workspace, en voor SCIM-provisioning voor geautomatiseerde synchronisatie van gebruikers en groepen. Als praktijk geldt: uw bestaande provider federeren is minder werk dan gebruikers één voor één opnieuw aanmaken.

  4. 4. Welke workloads treden op als principals?

    Elke dynamische groep is een lijst van workloads die API's aanroepen. Maak voor elk een service account in het juiste project; dat heeft geen toegang totdat een rol is toegewezen. Workload identity federation met uw OIDC-issuer geeft kortlevende tokens zonder statische sleutel, terwijl een sleutelbestand zeer gevoelig is; toegangstokens van service accounts zijn deprecated.

  5. 5. Welke rollen verleent u?

    Voorgedefinieerde rollen zijn owner, editor en reader, plus productrollen zoals postgres-flex.admin die vooral voor service accounts bedoeld zijn. Als u een persoon alleen een productrol geeft, kunnen delen van het Portal ontoegankelijk blijven.

  6. 6. Hoe legt u het vast?

    Beheer de structuur als code met de STACKIT-Terraform-provider. Een project is een stackit_resourcemanager_project, en het label networkArea dat het in een Network Area plaatst, wordt bij het aanmaken ingesteld en kan later niet meer worden gewijzigd. Review de code zoals elke andere wijziging.

Beslissingen van uw architecten

  • Projectgrenzen

    Het aantal en de vorm van de projecten, en de Network Area waartoe elk behoort. Deze keuze is achteraf het moeilijkst te wijzigen.

  • Roltoewijzing

    Welke OCI-verbniveaus, van inspect via read en use tot manage, bij welke STACKIT-rollen horen. Er is geen één-op-één-tabel om toe te passen.

  • Menselijke identiteit

    Een bestaande provider federeren of accounts aanmaken. Beslis wie eigenaar is van de levenscyclus van nieuwkomers en vertrekkers.

  • Workloadidentiteit

    Sleutels of federatie per service account, en waar een secret staat.

  • Break-glass-toegang

    Wie owner op de organisatie heeft en hoe die toegang wordt geauditeerd. De run beoordeelt dit niet.

  • Cutovervolgorde

    Maak structuur en bindingen aan voordat workloads arriveren, zodat de eerste deployment geen uitzondering nodig heeft.

Vragen van identiteitsteams

Kunnen OCI-policystatements automatisch worden geconverteerd?

Nee. De run noemt elke policy MANUAL_REVIEW en noemt de statements als instelling die aan u is overgelaten. Een statement en een rolbinding verschillen in structuur, dus elk statement wordt gelezen en opnieuw uitgedrukt als subject, rol en scope.

Kunnen we geneste compartments behouden als geneste mappen?

Nee. STACKIT ondersteunt momenteel één niveau mappen. Vlak de boom af tot mappen en projecten en bewaar het vroegere pad in een projectnaam of label.

Wat vervangt instance principals en dynamische groepen?

Service accounts. U maakt er een aan in een project, wijst het toe aan de workload en geeft het rollen; met workload identity federation geeft een vertrouwde OIDC-issuer kortlevende tokens zonder statische sleutel.

Leest StackToIT onze tenancy?

Nee. Het leest Terraform- en OpenTofu-code en maakt met niets verbinding. Gebruikers en groepen die handmatig in de console zijn aangemaakt, komen er niet in voor, dus exporteer die apart.

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