UNPKG

aws-cdk-github-oidc

Version:

CDK constructs to use OpenID Connect for authenticating your Github Action workflow with AWS IAM

121 lines (120 loc) 4.57 kB
import { Duration } from 'aws-cdk-lib'; import { IManagedPolicy, PolicyDocument } from 'aws-cdk-lib/aws-iam'; /** * Properties for defining an IAM Role. * These are copied fron @aws-cdk/aws-iam, but since JSII does not support * TypeScript <Partial<iam.RoleProps>> (or Omit), we have to do this stupid thing. * * Basically exactly the same as source, but with assumedBy removed. * * @stability stable */ export interface RoleProps { /** * List of IDs that the role assumer needs to provide one of when assuming this role. * * If the configured and provided external IDs do not match, the * AssumeRole operation will fail. * * @default No external ID required * @stability stable */ readonly externalIds?: string[]; /** * A list of managed policies associated with this role. * * You can add managed policies later using * `addManagedPolicy(ManagedPolicy.fromAwsManagedPolicyName(policyName))`. * * @default - No managed policies. * @stability stable */ readonly managedPolicies?: IManagedPolicy[]; /** * A list of named policies to inline into this role. * * These policies will be * created with the role, whereas those added by ``addToPolicy`` are added * using a separate CloudFormation resource (allowing a way around circular * dependencies that could otherwise be introduced). * * @default - No policy is inlined in the Role resource. * @stability stable */ readonly inlinePolicies?: { [name: string]: PolicyDocument; }; /** * The path associated with this role. * * For information about IAM paths, see * Friendly Names and Paths in IAM User Guide. * * @default / * @stability stable */ readonly path?: string; /** * AWS supports permissions boundaries for IAM entities (users or roles). * * A permissions boundary is an advanced feature for using a managed policy * to set the maximum permissions that an identity-based policy can grant to * an IAM entity. An entity's permissions boundary allows it to perform only * the actions that are allowed by both its identity-based policies and its * permissions boundaries. * * @default - No permissions boundary. * @stability stable * @link https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html */ readonly permissionsBoundary?: IManagedPolicy; /** * A name for the IAM role. * * For valid values, see the RoleName parameter for * the CreateRole action in the IAM API Reference. * * IMPORTANT: If you specify a name, you cannot perform updates that require * replacement of this resource. You can perform updates that require no or * some interruption. If you must replace the resource, specify a new name. * * If you specify a name, you must specify the CAPABILITY_NAMED_IAM value to * acknowledge your template's capabilities. For more information, see * Acknowledging IAM Resources in AWS CloudFormation Templates. * * @default - AWS CloudFormation generates a unique physical ID and uses that ID * for the role name. * @stability stable */ readonly roleName?: string; /** * The maximum session duration that you want to set for the specified role. * * This setting can have a value from 1 hour (3600sec) to 12 (43200sec) hours. * * Anyone who assumes the role from the AWS CLI or API can use the * DurationSeconds API parameter or the duration-seconds CLI parameter to * request a longer session. The MaxSessionDuration setting determines the * maximum duration that can be requested using the DurationSeconds * parameter. * * If users don't specify a value for the DurationSeconds parameter, their * security credentials are valid for one hour by default. This applies when * you use the AssumeRole* API operations or the assume-role* CLI operations * but does not apply when you use those operations to create a console URL. * * @default Duration.hours(1) * @stability stable * @link https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html */ readonly maxSessionDuration?: Duration; /** * A description of the role. * * It can be up to 1000 characters long. * * @default - No description. * @stability stable */ readonly description?: string; }