Repository navigation
fix: align workload trust with compute node identities - #939
Merged
Merged
Conversation
|
Enclave skipped this draft pull request. It will run automatically when you mark the PR as Ready for review. |
Vault permission-update fixtures from main now record the applied default trust policy, so ready roles are not scheduled for legacy trust repair. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
alongubkin
marked this pull request as ready for review
October 8, 2026 12:01
|
Updates now apply stack and resource permissions in update-specific states that report Updating and fail into UpdateFailed, so the executor never treats a live role as a failed create and replaces it. The create flow keeps its states; both share the permission helpers. The live node-trust script derives every node role name before creating any, so cleanup also covers a create whose response was lost. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ler block Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Container workload roles trusted only the retained legacy node identity, so nodes using the isolation identity could not vend credentials and workloads failed at startup. Trust both exact stack-scoped node role ARNs while retaining the account condition and caller-side AssumeRole requirement. Privileged setup reconciles older workload-role checkpoints; runtime authority rejects saved trust/policy write states before IAM access.
Live AWS reproduction: old trust allows legacy nodes but denies isolated nodes. The candidate allows both node identities for newly created roles and for a preexisting legacy role repaired through the actual controller. An unrelated same-account node remains denied despite having its own caller-side AssumeRole grant. Every task-owned role is deleted and absence verified. Three focused tests also pass.
Legacy checkpoint validation deserializes the older JSON without the new optional field and converges through the existing controller states. Full generated Terraform and CloudFormation compute renders pass terraform fmt/validate and cfn-lint. Full workload startup on isolated nodes is not yet exercised end to end; the STS role-chaining proof above covers the trust change itself.
After merging main: the vault permission-update fixtures added by #932 now record the applied default trust policy, so ready roles are not scheduled for legacy trust repair (including the runner-owned role in the ignored live vault test).
alien-infraservice_account (15) and vault (31) tests and allalien-cloudformationtests pass.Refs ALIEN-1316, ALIEN-1314
New controller state variants:
AwsServiceAccountState::UpdatingStackPermissionsandUpdatingResourcePermissions. Updates goUpdateStart -> UpdatingStackPermissions -> UpdatingResourcePermissions -> Ready, reportUpdating, and fail intoUpdateFailed, so a failed policy write can't put a live role intoCreateFailed, where the executor would replace it. Only privileged setup writes these states. Older binaries can't read them, so a checkpoint that stopped mid-update needs this version to resume. Create states are unchanged.