Skip to content

Commit 3dbb4b7

Browse files
author
AWS
committed
Amazon Aurora DSQL Update: Add support for resource-based policies for Aurora DSQL clusters. This will enable you to implement Block Public Access (BPA) which will help restrict access to your Aurora DSQL public or VPC endpoints.
1 parent fd9758a commit 3dbb4b7

File tree

2 files changed

+189
-4
lines changed

2 files changed

+189
-4
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"type": "feature",
3+
"category": "Amazon Aurora DSQL",
4+
"contributor": "",
5+
"description": "Add support for resource-based policies for Aurora DSQL clusters. This will enable you to implement Block Public Access (BPA) which will help restrict access to your Aurora DSQL public or VPC endpoints."
6+
}

services/dsql/src/main/resources/codegen-resources/service-2.json

Lines changed: 183 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
{"shape":"InternalServerException"},
3131
{"shape":"ConflictException"}
3232
],
33-
"documentation":"<p>The CreateCluster API allows you to create both single-region clusters and multi-Region clusters. With the addition of the <i>multiRegionProperties</i> parameter, you can create a cluster with witness Region support and establish peer relationships with clusters in other Regions during creation.</p> <note> <p>Creating multi-Region clusters requires additional IAM permissions beyond those needed for single-Region clusters, as detailed in the <b>Required permissions</b> section below.</p> </note> <p> <b>Required permissions</b> </p> <dl> <dt>dsql:CreateCluster</dt> <dd> <p>Required to create a cluster.</p> <p>Resources: <code>arn:aws:dsql:region:account-id:cluster/*</code> </p> </dd> <dt>dsql:TagResource</dt> <dd> <p>Permission to add tags to a resource.</p> <p>Resources: <code>arn:aws:dsql:region:account-id:cluster/*</code> </p> </dd> <dt>dsql:PutMultiRegionProperties</dt> <dd> <p>Permission to configure multi-region properties for a cluster.</p> <p>Resources: <code>arn:aws:dsql:region:account-id:cluster/*</code> </p> </dd> <dt>dsql:AddPeerCluster</dt> <dd> <p>When specifying <code>multiRegionProperties.clusters</code>, permission to add peer clusters.</p> <p>Resources:</p> <ul> <li> <p>Local cluster: <code>arn:aws:dsql:region:account-id:cluster/*</code> </p> </li> <li> <p>Each peer cluster: exact ARN of each specified peer cluster</p> </li> </ul> </dd> <dt>dsql:PutWitnessRegion</dt> <dd> <p>When specifying <code>multiRegionProperties.witnessRegion</code>, permission to set a witness Region. This permission is checked both in the cluster Region and in the witness Region.</p> <p>Resources: <code>arn:aws:dsql:region:account-id:cluster/*</code> </p> <p>Condition Keys: <code>dsql:WitnessRegion</code> (matching the specified witness region)</p> </dd> </dl> <important> <ul> <li> <p>The witness Region specified in <code>multiRegionProperties.witnessRegion</code> cannot be the same as the cluster's Region.</p> </li> </ul> </important>"
33+
"documentation":"<p>The CreateCluster API allows you to create both single-Region clusters and multi-Region clusters. With the addition of the <i>multiRegionProperties</i> parameter, you can create a cluster with witness Region support and establish peer relationships with clusters in other Regions during creation.</p> <note> <p>Creating multi-Region clusters requires additional IAM permissions beyond those needed for single-Region clusters, as detailed in the <b>Required permissions</b> section below.</p> </note> <p> <b>Required permissions</b> </p> <dl> <dt>dsql:CreateCluster</dt> <dd> <p>Required to create a cluster.</p> <p>Resources: <code>arn:aws:dsql:region:account-id:cluster/*</code> </p> </dd> <dt>dsql:TagResource</dt> <dd> <p>Permission to add tags to a resource.</p> <p>Resources: <code>arn:aws:dsql:region:account-id:cluster/*</code> </p> </dd> <dt>dsql:PutMultiRegionProperties</dt> <dd> <p>Permission to configure multi-Region properties for a cluster.</p> <p>Resources: <code>arn:aws:dsql:region:account-id:cluster/*</code> </p> </dd> <dt>dsql:AddPeerCluster</dt> <dd> <p>When specifying <code>multiRegionProperties.clusters</code>, permission to add peer clusters.</p> <p>Resources:</p> <ul> <li> <p>Local cluster: <code>arn:aws:dsql:region:account-id:cluster/*</code> </p> </li> <li> <p>Each peer cluster: exact ARN of each specified peer cluster</p> </li> </ul> </dd> <dt>dsql:PutWitnessRegion</dt> <dd> <p>When specifying <code>multiRegionProperties.witnessRegion</code>, permission to set a witness Region. This permission is checked both in the cluster Region and in the witness Region.</p> <p>Resources: <code>arn:aws:dsql:region:account-id:cluster/*</code> </p> <p>Condition Keys: <code>dsql:WitnessRegion</code> (matching the specified witness region)</p> </dd> </dl> <important> <ul> <li> <p>The witness Region specified in <code>multiRegionProperties.witnessRegion</code> cannot be the same as the cluster's Region.</p> </li> </ul> </important>"
3434
},
3535
"DeleteCluster":{
3636
"name":"DeleteCluster",
@@ -52,6 +52,26 @@
5252
"documentation":"<p>Deletes a cluster in Amazon Aurora DSQL.</p>",
5353
"idempotent":true
5454
},
55+
"DeleteClusterPolicy":{
56+
"name":"DeleteClusterPolicy",
57+
"http":{
58+
"method":"DELETE",
59+
"requestUri":"/cluster/{identifier}/policy",
60+
"responseCode":200
61+
},
62+
"input":{"shape":"DeleteClusterPolicyInput"},
63+
"output":{"shape":"DeleteClusterPolicyOutput"},
64+
"errors":[
65+
{"shape":"ThrottlingException"},
66+
{"shape":"ValidationException"},
67+
{"shape":"AccessDeniedException"},
68+
{"shape":"InternalServerException"},
69+
{"shape":"ResourceNotFoundException"},
70+
{"shape":"ConflictException"}
71+
],
72+
"documentation":"<p>Deletes the resource-based policy attached to a cluster. This removes all access permissions defined by the policy, reverting to default access controls.</p>",
73+
"idempotent":true
74+
},
5575
"GetCluster":{
5676
"name":"GetCluster",
5777
"http":{
@@ -70,6 +90,24 @@
7090
],
7191
"documentation":"<p>Retrieves information about a cluster.</p>"
7292
},
93+
"GetClusterPolicy":{
94+
"name":"GetClusterPolicy",
95+
"http":{
96+
"method":"GET",
97+
"requestUri":"/cluster/{identifier}/policy",
98+
"responseCode":200
99+
},
100+
"input":{"shape":"GetClusterPolicyInput"},
101+
"output":{"shape":"GetClusterPolicyOutput"},
102+
"errors":[
103+
{"shape":"ThrottlingException"},
104+
{"shape":"ValidationException"},
105+
{"shape":"AccessDeniedException"},
106+
{"shape":"InternalServerException"},
107+
{"shape":"ResourceNotFoundException"}
108+
],
109+
"documentation":"<p>Retrieves the resource-based policy document attached to a cluster. This policy defines the access permissions and conditions for the cluster.</p>"
110+
},
73111
"GetVpcEndpointServiceName":{
74112
"name":"GetVpcEndpointServiceName",
75113
"http":{
@@ -124,6 +162,26 @@
124162
],
125163
"documentation":"<p>Lists all of the tags for a resource.</p>"
126164
},
165+
"PutClusterPolicy":{
166+
"name":"PutClusterPolicy",
167+
"http":{
168+
"method":"POST",
169+
"requestUri":"/cluster/{identifier}/policy",
170+
"responseCode":200
171+
},
172+
"input":{"shape":"PutClusterPolicyInput"},
173+
"output":{"shape":"PutClusterPolicyOutput"},
174+
"errors":[
175+
{"shape":"ThrottlingException"},
176+
{"shape":"ValidationException"},
177+
{"shape":"AccessDeniedException"},
178+
{"shape":"InternalServerException"},
179+
{"shape":"ResourceNotFoundException"},
180+
{"shape":"ConflictException"}
181+
],
182+
"documentation":"<p>Attaches a resource-based policy to a cluster. This policy defines access permissions and conditions for the cluster, allowing you to control which principals can perform actions on the cluster.</p>",
183+
"idempotent":true
184+
},
127185
"TagResource":{
128186
"name":"TagResource",
129187
"http":{
@@ -178,7 +236,7 @@
178236
{"shape":"ResourceNotFoundException"},
179237
{"shape":"ConflictException"}
180238
],
181-
"documentation":"<p>The <i>UpdateCluster</i> API allows you to modify both single-Region and multi-Region cluster configurations. With the <i>multiRegionProperties</i> parameter, you can add or modify witness Region support and manage peer relationships with clusters in other Regions.</p> <note> <p>Note that updating multi-region clusters requires additional IAM permissions beyond those needed for standard cluster updates, as detailed in the Permissions section.</p> </note> <p> <b>Required permissions</b> </p> <dl> <dt>dsql:UpdateCluster</dt> <dd> <p>Permission to update a DSQL cluster.</p> <p>Resources: <code>arn:aws:dsql:<i>region</i>:<i>account-id</i>:cluster/<i>cluster-id</i> </code> </p> </dd> </dl> <dl> <dt>dsql:PutMultiRegionProperties</dt> <dd> <p>Permission to configure multi-Region properties for a cluster.</p> <p>Resources: <code>arn:aws:dsql:<i>region</i>:<i>account-id</i>:cluster/<i>cluster-id</i> </code> </p> </dd> </dl> <dl> <dt>dsql:GetCluster</dt> <dd> <p>Permission to retrieve cluster information.</p> <p>Resources: <code>arn:aws:dsql:<i>region</i>:<i>account-id</i>:cluster/<i>cluster-id</i> </code> </p> </dd> <dt>dsql:AddPeerCluster</dt> <dd> <p>Permission to add peer clusters.</p> <p>Resources:</p> <ul> <li> <p>Local cluster: <code>arn:aws:dsql:<i>region</i>:<i>account-id</i>:cluster/<i>cluster-id</i> </code> </p> </li> <li> <p>Each peer cluster: exact ARN of each specified peer cluster</p> </li> </ul> </dd> <dt>dsql:RemovePeerCluster</dt> <dd> <p>Permission to remove peer clusters. The <i>dsql:RemovePeerCluster</i> permission uses a wildcard ARN pattern to simplify permission management during updates.</p> <p>Resources: <code>arn:aws:dsql:*:<i>account-id</i>:cluster/*</code> </p> </dd> </dl> <dl> <dt>dsql:PutWitnessRegion</dt> <dd> <p>Permission to set a witness Region.</p> <p>Resources: <code>arn:aws:dsql:<i>region</i>:<i>account-id</i>:cluster/<i>cluster-id</i> </code> </p> <p>Condition Keys: dsql:WitnessRegion (matching the specified witness Region)</p> <p> <b>This permission is checked both in the cluster Region and in the witness Region.</b> </p> </dd> </dl> <important> <ul> <li> <p>The witness region specified in <code>multiRegionProperties.witnessRegion</code> cannot be the same as the cluster's Region.</p> </li> <li> <p>When updating clusters with peer relationships, permissions are checked for both adding and removing peers.</p> </li> <li> <p>The <code>dsql:RemovePeerCluster</code> permission uses a wildcard ARN pattern to simplify permission management during updates.</p> </li> </ul> </important>"
239+
"documentation":"<p>The <i>UpdateCluster</i> API allows you to modify both single-Region and multi-Region cluster configurations. With the <i>multiRegionProperties</i> parameter, you can add or modify witness Region support and manage peer relationships with clusters in other Regions.</p> <note> <p>Note that updating multi-Region clusters requires additional IAM permissions beyond those needed for standard cluster updates, as detailed in the Permissions section.</p> </note> <p> <b>Required permissions</b> </p> <dl> <dt>dsql:UpdateCluster</dt> <dd> <p>Permission to update a DSQL cluster.</p> <p>Resources: <code>arn:aws:dsql:<i>region</i>:<i>account-id</i>:cluster/<i>cluster-id</i> </code> </p> </dd> </dl> <dl> <dt>dsql:PutMultiRegionProperties</dt> <dd> <p>Permission to configure multi-Region properties for a cluster.</p> <p>Resources: <code>arn:aws:dsql:<i>region</i>:<i>account-id</i>:cluster/<i>cluster-id</i> </code> </p> </dd> </dl> <dl> <dt>dsql:GetCluster</dt> <dd> <p>Permission to retrieve cluster information.</p> <p>Resources: <code>arn:aws:dsql:<i>region</i>:<i>account-id</i>:cluster/<i>cluster-id</i> </code> </p> </dd> <dt>dsql:AddPeerCluster</dt> <dd> <p>Permission to add peer clusters.</p> <p>Resources:</p> <ul> <li> <p>Local cluster: <code>arn:aws:dsql:<i>region</i>:<i>account-id</i>:cluster/<i>cluster-id</i> </code> </p> </li> <li> <p>Each peer cluster: exact ARN of each specified peer cluster</p> </li> </ul> </dd> <dt>dsql:RemovePeerCluster</dt> <dd> <p>Permission to remove peer clusters. The <i>dsql:RemovePeerCluster</i> permission uses a wildcard ARN pattern to simplify permission management during updates.</p> <p>Resources: <code>arn:aws:dsql:*:<i>account-id</i>:cluster/*</code> </p> </dd> </dl> <dl> <dt>dsql:PutWitnessRegion</dt> <dd> <p>Permission to set a witness Region.</p> <p>Resources: <code>arn:aws:dsql:<i>region</i>:<i>account-id</i>:cluster/<i>cluster-id</i> </code> </p> <p>Condition Keys: dsql:WitnessRegion (matching the specified witness Region)</p> <p> <b>This permission is checked both in the cluster Region and in the witness Region.</b> </p> </dd> </dl> <important> <ul> <li> <p>The witness region specified in <code>multiRegionProperties.witnessRegion</code> cannot be the same as the cluster's Region.</p> </li> <li> <p>When updating clusters with peer relationships, permissions are checked for both adding and removing peers.</p> </li> <li> <p>The <code>dsql:RemovePeerCluster</code> permission uses a wildcard ARN pattern to simplify permission management during updates.</p> </li> </ul> </important>"
182240
}
183241
},
184242
"shapes":{
@@ -202,6 +260,10 @@
202260
"min":1,
203261
"pattern":"arn:.+"
204262
},
263+
"BypassPolicyLockoutSafetyCheck":{
264+
"type":"boolean",
265+
"box":true
266+
},
205267
"ClientToken":{
206268
"type":"string",
207269
"documentation":"<p>Idempotency token so a request is only processed once.</p>",
@@ -311,6 +373,14 @@
311373
"multiRegionProperties":{
312374
"shape":"MultiRegionProperties",
313375
"documentation":"<p>The configuration settings when creating a multi-Region cluster, including the witness region and linked cluster properties.</p>"
376+
},
377+
"policy":{
378+
"shape":"PolicyDocument",
379+
"documentation":"<p>An optional resource-based policy document in JSON format that defines access permissions for the cluster.</p>"
380+
},
381+
"bypassPolicyLockoutSafetyCheck":{
382+
"shape":"BypassPolicyLockoutSafetyCheck",
383+
"documentation":"<p>An optional field that controls whether to bypass the lockout prevention check. When set to true, this parameter allows you to apply a policy that might lock you out of the cluster. Use with caution.</p>"
314384
}
315385
}
316386
},
@@ -402,6 +472,39 @@
402472
},
403473
"documentation":"<p>The output from a deleted cluster.</p>"
404474
},
475+
"DeleteClusterPolicyInput":{
476+
"type":"structure",
477+
"required":["identifier"],
478+
"members":{
479+
"identifier":{
480+
"shape":"ClusterId",
481+
"location":"uri",
482+
"locationName":"identifier"
483+
},
484+
"expectedPolicyVersion":{
485+
"shape":"PolicyVersion",
486+
"documentation":"<p>The expected version of the policy to delete. This parameter ensures that you're deleting the correct version of the policy and helps prevent accidental deletions.</p>",
487+
"location":"querystring",
488+
"locationName":"expected-policy-version"
489+
},
490+
"clientToken":{
491+
"shape":"ClientToken",
492+
"idempotencyToken":true,
493+
"location":"querystring",
494+
"locationName":"client-token"
495+
}
496+
}
497+
},
498+
"DeleteClusterPolicyOutput":{
499+
"type":"structure",
500+
"required":["policyVersion"],
501+
"members":{
502+
"policyVersion":{
503+
"shape":"PolicyVersion",
504+
"documentation":"<p>The version of the policy that was deleted.</p>"
505+
}
506+
}
507+
},
405508
"DeletionProtectionEnabled":{
406509
"type":"boolean",
407510
"documentation":"<p>Indicates whether deletion protection is enabled for a cluster.</p>",
@@ -499,6 +602,35 @@
499602
},
500603
"documentation":"<p>The output of a cluster.</p>"
501604
},
605+
"GetClusterPolicyInput":{
606+
"type":"structure",
607+
"required":["identifier"],
608+
"members":{
609+
"identifier":{
610+
"shape":"ClusterId",
611+
"documentation":"<p>The ID of the cluster to retrieve the policy from.</p>",
612+
"location":"uri",
613+
"locationName":"identifier"
614+
}
615+
}
616+
},
617+
"GetClusterPolicyOutput":{
618+
"type":"structure",
619+
"required":[
620+
"policy",
621+
"policyVersion"
622+
],
623+
"members":{
624+
"policy":{
625+
"shape":"PolicyDocument",
626+
"documentation":"<p>The resource-based policy document attached to the cluster, returned as a JSON string.</p>"
627+
},
628+
"policyVersion":{
629+
"shape":"PolicyVersion",
630+
"documentation":"<p>The version of the policy document. This version number is incremented each time the policy is updated.</p>"
631+
}
632+
}
633+
},
502634
"GetVpcEndpointServiceNameInput":{
503635
"type":"structure",
504636
"required":["identifier"],
@@ -614,11 +746,11 @@
614746
"members":{
615747
"witnessRegion":{
616748
"shape":"Region",
617-
"documentation":"<p>The that serves as the witness region for a multi-Region cluster. The witness region helps maintain cluster consistency and quorum.</p>"
749+
"documentation":"<p>The Region that serves as the witness region for a multi-Region cluster. The witness Region helps maintain cluster consistency and quorum.</p>"
618750
},
619751
"clusters":{
620752
"shape":"ClusterArnList",
621-
"documentation":"<p>The set of linked clusters that form the multi-Region cluster configuration. Each linked cluster represents a database instance in a different Region.</p>"
753+
"documentation":"<p>The set of peered clusters that form the multi-Region cluster configuration. Each peered cluster represents a database instance in a different Region.</p>"
622754
}
623755
},
624756
"documentation":"<p>Defines the structure for multi-Region cluster configurations, containing the witness region and linked cluster settings.</p>"
@@ -627,6 +759,53 @@
627759
"type":"string",
628760
"documentation":"<p>Token used to retrieve next page.</p>"
629761
},
762+
"PolicyDocument":{
763+
"type":"string",
764+
"documentation":"<p>A resource-based policy document in JSON format. Length constraints: Minimum length of 1. Maximum length of 20480 characters (approximately 20KB).</p>",
765+
"max":20480,
766+
"min":1
767+
},
768+
"PolicyVersion":{"type":"string"},
769+
"PutClusterPolicyInput":{
770+
"type":"structure",
771+
"required":[
772+
"identifier",
773+
"policy"
774+
],
775+
"members":{
776+
"identifier":{
777+
"shape":"ClusterId",
778+
"location":"uri",
779+
"locationName":"identifier"
780+
},
781+
"policy":{
782+
"shape":"PolicyDocument",
783+
"documentation":"<p>The resource-based policy document to attach to the cluster. This should be a valid JSON policy document that defines permissions and conditions.</p>"
784+
},
785+
"bypassPolicyLockoutSafetyCheck":{
786+
"shape":"BypassPolicyLockoutSafetyCheck",
787+
"documentation":"<p>A flag that allows you to bypass the policy lockout safety check. When set to true, this parameter allows you to apply a policy that might lock you out of the cluster. Use with caution.</p>"
788+
},
789+
"expectedPolicyVersion":{
790+
"shape":"PolicyVersion",
791+
"documentation":"<p>The expected version of the current policy. This parameter ensures that you're updating the correct version of the policy and helps prevent concurrent modification conflicts.</p>"
792+
},
793+
"clientToken":{
794+
"shape":"ClientToken",
795+
"idempotencyToken":true
796+
}
797+
}
798+
},
799+
"PutClusterPolicyOutput":{
800+
"type":"structure",
801+
"required":["policyVersion"],
802+
"members":{
803+
"policyVersion":{
804+
"shape":"PolicyVersion",
805+
"documentation":"<p>The version of the policy after it has been updated or created.</p>"
806+
}
807+
}
808+
},
630809
"Region":{
631810
"type":"string",
632811
"documentation":"<p> Region name.</p>",

0 commit comments

Comments
 (0)