Prerequisites — cross-account IAM role
Openbox provisions in your AWS account via a customer-created IAM role that trusts Openbox's provisioning account. Openbox never receives long-lived credentials.
Step 1 — Confirm Openbox's principal ARN
Openbox will give you a principal ARN of the form:
arn:aws:iam::<openbox-provisioning-account-id>:role/openbox-provisioning
Openbox rotates this per engagement — do not hard-code from an old runbook.
Step 2 — Create the trust role
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowOpenboxProvisioningToAssume",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<openbox-provisioning-account-id>:role/openbox-provisioning"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "<random-external-id-you-generate>"
}
}
}
]
}
Set the ExternalId to something random (Openbox will use it — coordinate on the exact value out-of-band). This defends against the confused-deputy problem.
Step 3 — Attach minimum permissions
The role needs enough permissions to run the Terraform snippets Openbox will apply. Recommended: attach the AWS-managed PowerUserAccess policy for the initial terraform apply, then downgrade to a scoped custom policy for day-2.
Scoped custom policy (attach after initial provisioning):
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"eks:*",
"ec2:Describe*",
"iam:GetRole",
"iam:PassRole",
"s3:*Object",
"kms:Encrypt",
"kms:Decrypt",
"kms:GenerateDataKey",
"rds:Describe*",
"cloudwatch:GetMetricData",
"logs:GetLogEvents"
],
"Resource": "*"
}
]
}
Openbox will help scope tighter if your compliance program requires per-resource ARNs.
Step 4 — Share with Openbox
Provide these to Openbox via a secure channel (encrypted email, SSO'd file share — your call, Openbox does not dictate the medium):
- Account ID:
<12-digit AWS account> - Role ARN:
arn:aws:iam::<your-account>:role/openbox-provisioning-role - ExternalId:
<value from step 2> - Region(s) where OpenBox should provision
- VPC layout preference: dedicated VPC (recommended) OR reuse existing VPC by ID
Rotation
- Rotate
ExternalIdif compromise suspected (Openbox re-provisions with new value) - Openbox rotates its provisioning principal quarterly — you must update the trust policy each rotation
- Openbox will send 14-day advance notice before each rotation
Break-glass
The role remains under your control. To sever Openbox access in an emergency, remove the AllowOpenboxProvisioningToAssume statement from the trust policy — takes effect within seconds.