Chapter 57 · Amazon Aurora MySQL
Subchapter 57.18
references/shared-foundation-security-considerations.mdMarkdown5 KBView on GitHub
The amazon-aurora skill creates and modifies Aurora resources when the user requests it, but blocks destructive operations (deletes, major upgrades, purchases). The agent MUST enforce the practices below.
The caller’s IAM principal needs read and write permissions for RDS to create and modify clusters. Scope permissions to the minimum required actions.
Required permissions (by service):
| Service | Required actions |
|---|---|
| RDS | rds:DescribeDBClusters, rds:DescribeDBInstances, rds:DescribeDBEngineVersions, rds:DescribeReservedDBInstancesOfferings |
| CloudWatch | cloudwatch:GetMetricStatistics, cloudwatch:ListMetrics |
| Pricing | pricing:GetProducts, pricing:DescribeServices |
| Savings Plans | savingsplans:DescribeSavingsPlansOfferings, savingsplans:DescribeSavingsPlansOfferingRates |
Managed policies AmazonRDSReadOnlyAccess and CloudWatchReadOnlyAccess cover most of this; add Pricing and Savings Plans read actions via a scoped custom policy.
Do NOT use AdministratorAccess or *:FullAccess managed policies. Scope write permissions to the specific actions the skill uses: rds:CreateDBCluster, rds:CreateDBInstance, rds:ModifyDBCluster, rds:ModifyDBInstance, rds:AddTagsToResource, rds:RemoveTagsFromResource. For reads: rds:Describe*, rds:List*.
ada credentials update, SSO) over long-lived IAM user keys.aws rds generate-db-auth-token or rds_client.generate_db_auth_token() is explicitly safe — these produce short-lived (15-minute) tokens derived from the caller’s IAM identity. They are not stored credentials. Use them when IAM database authentication is enabled on the cluster.secretArn and let the service resolve them.Enabling RDS Data API solely to run upgrade prechecks widens the cluster’s connectivity surface. The Data API endpoint is HTTPS-reachable over the public AWS plane (authenticated with IAM), so it’s safer than opening a new SG ingress rule, but it’s still an additional attack surface.
user-runs-script precheck method insteadAny CloudFormation, CDK, or AWS CLI snippet produced by this skill MUST use secure defaults:
StorageEncrypted: true (and KmsKeyId if the user has a customer-managed key)require_secure_transport=ON0.0.0.0/0 or ::/0--publicly-accessible. If the user needs connectivity from outside the VPC, use the RDS Data API (HTTPS + IAM), an EC2 bastion with SSH tunnel, or VPN/Direct Connect into the VPC.general_log, slow_query_log, the audit log (server_audit_logging), or other audit/logging parameters “for convenience”LoginFailures and DatabaseConnections. CloudWatch log exports (error, slowquery, audit) give query-level visibility but do not cover API-level activity — CloudTrail does.prod, production, or PROD as example/default values — those get copy-pasted into production accidentally