in lib/teams/index.ts [137:178]
protected getOrCreateRole(clusterInfo: ClusterInfo, users: Array<iam.ArnPrincipal>, roleArn?: string): iam.IRole | undefined {
let role: IRole | undefined = undefined;
if (users?.length == 0) {
return role;
}
if (roleArn) {
role = iam.Role.fromRoleArn(clusterInfo.cluster.stack, `${this.name}-team-role`, roleArn);
users.forEach(user => role?.grant(user, "sts:assumeRole"));
}
else {
role = new iam.Role(clusterInfo.cluster.stack, this.teamProps.namespace + 'AccessRole', {
assumedBy: new iam.CompositePrincipal(...users)
});
role.addToPrincipalPolicy(new iam.PolicyStatement({
effect: iam.Effect.ALLOW,
resources: [clusterInfo.cluster.clusterArn],
actions: [
"eks:DescribeNodegroup",
"eks:ListNodegroups",
"eks:DescribeCluster",
"eks:ListClusters",
"eks:AccessKubernetesApi",
"ssm:GetParameter",
"eks:ListUpdates",
"eks:ListFargateProfiles"
]
})
);
role.addToPrincipalPolicy(new iam.PolicyStatement({
effect: iam.Effect.ALLOW,
resources: ["*"],
actions: [
"eks:ListClusters"
]
})
);
}
return role;
}