E.g.
const crossAccountRole = new iam.Role(this, 'CrossAccountRole', {
// The role name must be predictable
roleName: 'MyDelegationRole',
// The other account
assumedBy: new iam.AccountPrincipal('12345678901'),
});
const crossAccountRole = new iam.Role(this, 'CrossAccountRole', {
// The role name must be predictable
roleName: 'MyDelegationRole',
// The other account
assumedBy: new iam.AccountPrincipal('12345678901'),
// You can scope down this role policy to be least privileged.
// If you want the other account to be able to manage specific records,
// you can scope down by resource and/or normalized record names
inlinePolicies: {
"crossAccountPolicy": new iam.PolicyDocument({
statements: [
new iam.PolicyStatement({
sid: "ListHostedZonesByName",
effect: iam.Effect.ALLOW,
actions: ["route53:ListHostedZonesByName"],
resources: ["*"]
}),
new iam.PolicyStatement({
sid: "GetHostedZoneAndChangeResourceRecordSet",
effect: iam.Effect.ALLOW,
actions: ["route53:GetHostedZone", "route53:ChangeResourceRecordSet"],
// This example assumes the RecordSet subdomain.somexample.com
// is contained in the HostedZone
resources: ["arn:aws:route53:::hostedzone/HZID00000000000000000"],
conditions: {
"ForAllValues:StringLike": {
"route53:ChangeResourceRecordSetsNormalizedRecordNames": [
"subdomain.someexample.com"
]
}
}
})
});
Describe the issue
The
Cross Account Zone Delegationguidance includes reference to creating acrossAccountRole, but provides no suggestion on how to safely scope down the role for least-privilege access. We can and should provide this guidance.E.g.
should be more like:
Links
https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_route53-readme.html#cross-account-zone-delegation