Skip to content

docs(spec): Quick Setup IoT thing policy and cross-account provisioning - #114

Merged
rvanderwerf merged 2 commits into
mainfrom
spec/quick-setup-iot-policy-and-cross-account
Oct 30, 2026
Merged

rvanderwerf merged 2 commits into
mainfrom
spec/quick-setup-iot-policy-and-cross-account

Conversation

@rvanderwerf

Copy link
Copy Markdown
Contributor

Two Kiro specs for what #110 left open. Docs only.

  • .kiro/specs/quick-setup-iot-thing-policy/: the station's Quick Setup credentials can still create new versions of the shared GreengrassV2IoTThingPolicy, which every device certificate in the account uses, and can attach any IoT policy to any certificate.
    • Phase 1 moves the IoT policy writes into the Lambda's preparation session, as fix(quick-setup): prepare the token exchange role in the portal, not on the station #110 did for the IAM writes. It also fixes the shadow-statement repair that Quick Setup could never run: the 2026-10-29 live run showed iot:GetPolicyVersion denied.
    • Phase 2 is a decision point: the portal creates the certificate from a CSR, so the station needs no IoT write and its private key never leaves it.
  • .kiro/specs/quick-setup-cross-account-provisioning/: DDAPortalAccessRole lacks the Greengrass installer's provisioning actions, so cross-account Quick Setup cannot provision a device. This was found by reading the stack; it has not been run. The spec adds a dedicated DDAStationProvisioningRole per use-case account, assumed by the quick_setup Lambda, with the portal's ceiling. DDAPortalAccessRole does not grow.

Each spec has requirements, a design and tasks. The decision points are marked in the designs.

… cross-account provisioning

Two specs for the gaps left after #110:

- quick-setup-iot-thing-policy: the station can still create versions of the
  shared GreengrassV2IoTThingPolicy and attach any IoT policy to any
  certificate. Phase 1 moves the policy writes into the Lambda's preparation
  session (and fixes the shadow statement repair, which Quick Setup could not
  run: no iot:GetPolicyVersion); phase 2, a decision point, creates the
  certificate from a CSR in the portal so the station needs no IoT write.
- quick-setup-cross-account-provisioning: DDAPortalAccessRole lacks the
  installer's provisioning actions, so cross-account Quick Setup cannot
  provision a device. A dedicated DDAStationProvisioningRole per use-case
  account, assumed by the quick_setup Lambda, with the portal's ceiling.
Approved on 2026-10-30:
- quick-setup-iot-thing-policy: both phases. Phase 1 ships first; phase 2
  (the portal creates the certificate from a CSR, no IoT write on the
  station) builds on its Preparation_Session.
- quick-setup-cross-account-provisioning: no DDAPortalAccessRole fallback.
  The inline-only token exchange role preparation is removed; an account
  without the dedicated role gets the 503 and its remedy.

The cross-account role carries the UseCase account's permissions boundary,
which is being added.
@rvanderwerf
rvanderwerf merged commit 3820d43 into main Oct 30, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant