UNPKG

cdk-rds-sql

Version:

A CDK construct that allows creating roles or users and databases on Aurora Serverless PostgreSQL or MySQL/MariaDB clusters, as well as AWS DSQL clusters.

93 lines (92 loc) 3 kB
import * as kms from "aws-cdk-lib/aws-kms"; import { ISecret } from "aws-cdk-lib/aws-secretsmanager"; import { Construct } from "constructs"; import { IDatabase } from "./database"; import { IProvider } from "./provider"; export interface RoleProps { /** * Provider. */ readonly provider: IProvider; /** * SQL. */ readonly roleName: string; /** * Optional database this user is expected to use. * * If the database exists, connect privileges are granted. * * Specify one of `database` or `databaseName`. This is the name * that will be stored in the role's secret as the database name to * use. */ readonly database?: IDatabase; /** * Optional database name this user is expected to use. * * If the database exists, connect privileges are granted. * * Specify one of `database` or `databaseName`. This is the name * that will be stored in the role's secret as the database name to * use. */ readonly databaseName?: string; /** * A new secret is created for this user. * * Optionally encrypt it with the given key. */ readonly encryptionKey?: kms.IKey; /** * A new secret is created for this user. * * Optionally add secret name to the secret. */ readonly secretName?: string; /** * Prefix for SSM parameters to store credentials in Parameter Store. * When defined, credentials will also be stored as parameters. * * The parameter names such as "password" is simply appended to * `parameterPrefix`, so make sure the prefix ends with a slash if * you have your parameter names slash separated. * * Note that the password from the secret is copied just once, they * are not kept in sync. * * @default - credentials are only stored in Secrets Manager */ readonly parameterPrefix?: string; /** * Enable IAM authentication for this role. * * When enabled, the role will be created without a password and * configured for AWS IAM database authentication. No secret will * be created for this role. * * Note: For DSQL clusters, this property is ignored as DSQL always * uses IAM authentication. * * @default false - use password authentication */ readonly enableIamAuth?: boolean; } export declare class Role extends Construct { /** * The role name. */ readonly roleName: string; /** * The generated secret containing connection information and password. * * This is only available when: * - The provider is not a DSQL cluster (DSQL uses IAM authentication) * - `enableIamAuth` is not set to `true` * * When using IAM authentication, no secret is created as the password * is generated dynamically using IAM credentials. */ readonly secret?: ISecret; constructor(scope: Construct, id: string, props: RoleProps); }