aws-sdk-accessanalyzer 1.50.0 → 1.52.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -17,6 +17,7 @@ module Aws::AccessAnalyzer
17
17
  AccessActionsList = Shapes::ListShape.new(name: 'AccessActionsList')
18
18
  AccessCheckPolicyDocument = Shapes::StringShape.new(name: 'AccessCheckPolicyDocument')
19
19
  AccessCheckPolicyType = Shapes::StringShape.new(name: 'AccessCheckPolicyType')
20
+ AccessCheckResourceType = Shapes::StringShape.new(name: 'AccessCheckResourceType')
20
21
  AccessDeniedException = Shapes::StructureShape.new(name: 'AccessDeniedException')
21
22
  AccessPointArn = Shapes::StringShape.new(name: 'AccessPointArn')
22
23
  AccessPointPolicy = Shapes::StringShape.new(name: 'AccessPointPolicy')
@@ -30,6 +31,7 @@ module Aws::AccessAnalyzer
30
31
  AccessPreviewStatusReasonCode = Shapes::StringShape.new(name: 'AccessPreviewStatusReasonCode')
31
32
  AccessPreviewSummary = Shapes::StructureShape.new(name: 'AccessPreviewSummary')
32
33
  AccessPreviewsList = Shapes::ListShape.new(name: 'AccessPreviewsList')
34
+ AccessResourcesList = Shapes::ListShape.new(name: 'AccessResourcesList')
33
35
  AclCanonicalId = Shapes::StringShape.new(name: 'AclCanonicalId')
34
36
  AclGrantee = Shapes::UnionShape.new(name: 'AclGrantee')
35
37
  AclPermission = Shapes::StringShape.new(name: 'AclPermission')
@@ -57,6 +59,9 @@ module Aws::AccessAnalyzer
57
59
  CheckNoNewAccessRequest = Shapes::StructureShape.new(name: 'CheckNoNewAccessRequest')
58
60
  CheckNoNewAccessResponse = Shapes::StructureShape.new(name: 'CheckNoNewAccessResponse')
59
61
  CheckNoNewAccessResult = Shapes::StringShape.new(name: 'CheckNoNewAccessResult')
62
+ CheckNoPublicAccessRequest = Shapes::StructureShape.new(name: 'CheckNoPublicAccessRequest')
63
+ CheckNoPublicAccessResponse = Shapes::StructureShape.new(name: 'CheckNoPublicAccessResponse')
64
+ CheckNoPublicAccessResult = Shapes::StringShape.new(name: 'CheckNoPublicAccessResult')
60
65
  CloudTrailArn = Shapes::StringShape.new(name: 'CloudTrailArn')
61
66
  CloudTrailDetails = Shapes::StructureShape.new(name: 'CloudTrailDetails')
62
67
  CloudTrailProperties = Shapes::StructureShape.new(name: 'CloudTrailProperties')
@@ -106,6 +111,8 @@ module Aws::AccessAnalyzer
106
111
  FindingType = Shapes::StringShape.new(name: 'FindingType')
107
112
  FindingsList = Shapes::ListShape.new(name: 'FindingsList')
108
113
  FindingsListV2 = Shapes::ListShape.new(name: 'FindingsListV2')
114
+ GenerateFindingRecommendationRequest = Shapes::StructureShape.new(name: 'GenerateFindingRecommendationRequest')
115
+ GenerateFindingRecommendationRequestIdString = Shapes::StringShape.new(name: 'GenerateFindingRecommendationRequestIdString')
109
116
  GeneratedPolicy = Shapes::StructureShape.new(name: 'GeneratedPolicy')
110
117
  GeneratedPolicyList = Shapes::ListShape.new(name: 'GeneratedPolicyList')
111
118
  GeneratedPolicyProperties = Shapes::StructureShape.new(name: 'GeneratedPolicyProperties')
@@ -118,6 +125,10 @@ module Aws::AccessAnalyzer
118
125
  GetAnalyzerResponse = Shapes::StructureShape.new(name: 'GetAnalyzerResponse')
119
126
  GetArchiveRuleRequest = Shapes::StructureShape.new(name: 'GetArchiveRuleRequest')
120
127
  GetArchiveRuleResponse = Shapes::StructureShape.new(name: 'GetArchiveRuleResponse')
128
+ GetFindingRecommendationRequest = Shapes::StructureShape.new(name: 'GetFindingRecommendationRequest')
129
+ GetFindingRecommendationRequestIdString = Shapes::StringShape.new(name: 'GetFindingRecommendationRequestIdString')
130
+ GetFindingRecommendationRequestMaxResultsInteger = Shapes::IntegerShape.new(name: 'GetFindingRecommendationRequestMaxResultsInteger')
131
+ GetFindingRecommendationResponse = Shapes::StructureShape.new(name: 'GetFindingRecommendationResponse')
121
132
  GetFindingRequest = Shapes::StructureShape.new(name: 'GetFindingRequest')
122
133
  GetFindingResponse = Shapes::StructureShape.new(name: 'GetFindingResponse')
123
134
  GetFindingV2Request = Shapes::StructureShape.new(name: 'GetFindingV2Request')
@@ -205,7 +216,13 @@ module Aws::AccessAnalyzer
205
216
  ReasonCode = Shapes::StringShape.new(name: 'ReasonCode')
206
217
  ReasonSummary = Shapes::StructureShape.new(name: 'ReasonSummary')
207
218
  ReasonSummaryList = Shapes::ListShape.new(name: 'ReasonSummaryList')
219
+ RecommendationError = Shapes::StructureShape.new(name: 'RecommendationError')
220
+ RecommendationType = Shapes::StringShape.new(name: 'RecommendationType')
221
+ RecommendedRemediationAction = Shapes::StringShape.new(name: 'RecommendedRemediationAction')
222
+ RecommendedStep = Shapes::UnionShape.new(name: 'RecommendedStep')
223
+ RecommendedStepList = Shapes::ListShape.new(name: 'RecommendedStepList')
208
224
  RegionList = Shapes::ListShape.new(name: 'RegionList')
225
+ Resource = Shapes::StringShape.new(name: 'Resource')
209
226
  ResourceArn = Shapes::StringShape.new(name: 'ResourceArn')
210
227
  ResourceNotFoundException = Shapes::StructureShape.new(name: 'ResourceNotFoundException')
211
228
  ResourceType = Shapes::StringShape.new(name: 'ResourceType')
@@ -234,6 +251,7 @@ module Aws::AccessAnalyzer
234
251
  StartPolicyGenerationRequest = Shapes::StructureShape.new(name: 'StartPolicyGenerationRequest')
235
252
  StartPolicyGenerationResponse = Shapes::StructureShape.new(name: 'StartPolicyGenerationResponse')
236
253
  StartResourceScanRequest = Shapes::StructureShape.new(name: 'StartResourceScanRequest')
254
+ Status = Shapes::StringShape.new(name: 'Status')
237
255
  StatusReason = Shapes::StructureShape.new(name: 'StatusReason')
238
256
  String = Shapes::StringShape.new(name: 'String')
239
257
  Substring = Shapes::StructureShape.new(name: 'Substring')
@@ -259,6 +277,7 @@ module Aws::AccessAnalyzer
259
277
  UnusedIamUserAccessKeyDetails = Shapes::StructureShape.new(name: 'UnusedIamUserAccessKeyDetails')
260
278
  UnusedIamUserPasswordDetails = Shapes::StructureShape.new(name: 'UnusedIamUserPasswordDetails')
261
279
  UnusedPermissionDetails = Shapes::StructureShape.new(name: 'UnusedPermissionDetails')
280
+ UnusedPermissionsRecommendedStep = Shapes::StructureShape.new(name: 'UnusedPermissionsRecommendedStep')
262
281
  UpdateArchiveRuleRequest = Shapes::StructureShape.new(name: 'UpdateArchiveRuleRequest')
263
282
  UpdateFindingsRequest = Shapes::StructureShape.new(name: 'UpdateFindingsRequest')
264
283
  ValidatePolicyFinding = Shapes::StructureShape.new(name: 'ValidatePolicyFinding')
@@ -275,7 +294,8 @@ module Aws::AccessAnalyzer
275
294
  VpcConfiguration = Shapes::StructureShape.new(name: 'VpcConfiguration')
276
295
  VpcId = Shapes::StringShape.new(name: 'VpcId')
277
296
 
278
- Access.add_member(:actions, Shapes::ShapeRef.new(shape: AccessActionsList, required: true, location_name: "actions"))
297
+ Access.add_member(:actions, Shapes::ShapeRef.new(shape: AccessActionsList, location_name: "actions"))
298
+ Access.add_member(:resources, Shapes::ShapeRef.new(shape: AccessResourcesList, location_name: "resources"))
279
299
  Access.struct_class = Types::Access
280
300
 
281
301
  AccessActionsList.member = Shapes::ShapeRef.new(shape: Action)
@@ -322,6 +342,8 @@ module Aws::AccessAnalyzer
322
342
 
323
343
  AccessPreviewsList.member = Shapes::ShapeRef.new(shape: AccessPreviewSummary)
324
344
 
345
+ AccessResourcesList.member = Shapes::ShapeRef.new(shape: Resource)
346
+
325
347
  AclGrantee.add_member(:id, Shapes::ShapeRef.new(shape: AclCanonicalId, location_name: "id"))
326
348
  AclGrantee.add_member(:uri, Shapes::ShapeRef.new(shape: AclUri, location_name: "uri"))
327
349
  AclGrantee.add_member(:unknown, Shapes::ShapeRef.new(shape: nil, location_name: 'unknown'))
@@ -412,6 +434,15 @@ module Aws::AccessAnalyzer
412
434
  CheckNoNewAccessResponse.add_member(:reasons, Shapes::ShapeRef.new(shape: ReasonSummaryList, location_name: "reasons"))
413
435
  CheckNoNewAccessResponse.struct_class = Types::CheckNoNewAccessResponse
414
436
 
437
+ CheckNoPublicAccessRequest.add_member(:policy_document, Shapes::ShapeRef.new(shape: AccessCheckPolicyDocument, required: true, location_name: "policyDocument"))
438
+ CheckNoPublicAccessRequest.add_member(:resource_type, Shapes::ShapeRef.new(shape: AccessCheckResourceType, required: true, location_name: "resourceType"))
439
+ CheckNoPublicAccessRequest.struct_class = Types::CheckNoPublicAccessRequest
440
+
441
+ CheckNoPublicAccessResponse.add_member(:result, Shapes::ShapeRef.new(shape: CheckNoPublicAccessResult, location_name: "result"))
442
+ CheckNoPublicAccessResponse.add_member(:message, Shapes::ShapeRef.new(shape: String, location_name: "message"))
443
+ CheckNoPublicAccessResponse.add_member(:reasons, Shapes::ShapeRef.new(shape: ReasonSummaryList, location_name: "reasons"))
444
+ CheckNoPublicAccessResponse.struct_class = Types::CheckNoPublicAccessResponse
445
+
415
446
  CloudTrailDetails.add_member(:trails, Shapes::ShapeRef.new(shape: TrailList, required: true, location_name: "trails"))
416
447
  CloudTrailDetails.add_member(:access_role, Shapes::ShapeRef.new(shape: RoleArn, required: true, location_name: "accessRole"))
417
448
  CloudTrailDetails.add_member(:start_time, Shapes::ShapeRef.new(shape: Timestamp, required: true, location_name: "startTime"))
@@ -613,6 +644,10 @@ module Aws::AccessAnalyzer
613
644
 
614
645
  FindingsListV2.member = Shapes::ShapeRef.new(shape: FindingSummaryV2)
615
646
 
647
+ GenerateFindingRecommendationRequest.add_member(:analyzer_arn, Shapes::ShapeRef.new(shape: AnalyzerArn, required: true, location: "querystring", location_name: "analyzerArn"))
648
+ GenerateFindingRecommendationRequest.add_member(:id, Shapes::ShapeRef.new(shape: GenerateFindingRecommendationRequestIdString, required: true, location: "uri", location_name: "id"))
649
+ GenerateFindingRecommendationRequest.struct_class = Types::GenerateFindingRecommendationRequest
650
+
616
651
  GeneratedPolicy.add_member(:policy, Shapes::ShapeRef.new(shape: String, required: true, location_name: "policy"))
617
652
  GeneratedPolicy.struct_class = Types::GeneratedPolicy
618
653
 
@@ -654,6 +689,22 @@ module Aws::AccessAnalyzer
654
689
  GetArchiveRuleResponse.add_member(:archive_rule, Shapes::ShapeRef.new(shape: ArchiveRuleSummary, required: true, location_name: "archiveRule"))
655
690
  GetArchiveRuleResponse.struct_class = Types::GetArchiveRuleResponse
656
691
 
692
+ GetFindingRecommendationRequest.add_member(:analyzer_arn, Shapes::ShapeRef.new(shape: AnalyzerArn, required: true, location: "querystring", location_name: "analyzerArn"))
693
+ GetFindingRecommendationRequest.add_member(:id, Shapes::ShapeRef.new(shape: GetFindingRecommendationRequestIdString, required: true, location: "uri", location_name: "id"))
694
+ GetFindingRecommendationRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: GetFindingRecommendationRequestMaxResultsInteger, location: "querystring", location_name: "maxResults"))
695
+ GetFindingRecommendationRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: Token, location: "querystring", location_name: "nextToken"))
696
+ GetFindingRecommendationRequest.struct_class = Types::GetFindingRecommendationRequest
697
+
698
+ GetFindingRecommendationResponse.add_member(:started_at, Shapes::ShapeRef.new(shape: Timestamp, required: true, location_name: "startedAt"))
699
+ GetFindingRecommendationResponse.add_member(:completed_at, Shapes::ShapeRef.new(shape: Timestamp, location_name: "completedAt"))
700
+ GetFindingRecommendationResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: Token, location_name: "nextToken"))
701
+ GetFindingRecommendationResponse.add_member(:error, Shapes::ShapeRef.new(shape: RecommendationError, location_name: "error"))
702
+ GetFindingRecommendationResponse.add_member(:resource_arn, Shapes::ShapeRef.new(shape: ResourceArn, required: true, location_name: "resourceArn"))
703
+ GetFindingRecommendationResponse.add_member(:recommended_steps, Shapes::ShapeRef.new(shape: RecommendedStepList, location_name: "recommendedSteps"))
704
+ GetFindingRecommendationResponse.add_member(:recommendation_type, Shapes::ShapeRef.new(shape: RecommendationType, required: true, location_name: "recommendationType"))
705
+ GetFindingRecommendationResponse.add_member(:status, Shapes::ShapeRef.new(shape: Status, required: true, location_name: "status"))
706
+ GetFindingRecommendationResponse.struct_class = Types::GetFindingRecommendationResponse
707
+
657
708
  GetFindingRequest.add_member(:analyzer_arn, Shapes::ShapeRef.new(shape: AnalyzerArn, required: true, location: "querystring", location_name: "analyzerArn"))
658
709
  GetFindingRequest.add_member(:id, Shapes::ShapeRef.new(shape: FindingId, required: true, location: "uri", location_name: "id"))
659
710
  GetFindingRequest.struct_class = Types::GetFindingRequest
@@ -914,6 +965,18 @@ module Aws::AccessAnalyzer
914
965
 
915
966
  ReasonSummaryList.member = Shapes::ShapeRef.new(shape: ReasonSummary)
916
967
 
968
+ RecommendationError.add_member(:code, Shapes::ShapeRef.new(shape: String, required: true, location_name: "code"))
969
+ RecommendationError.add_member(:message, Shapes::ShapeRef.new(shape: String, required: true, location_name: "message"))
970
+ RecommendationError.struct_class = Types::RecommendationError
971
+
972
+ RecommendedStep.add_member(:unused_permissions_recommended_step, Shapes::ShapeRef.new(shape: UnusedPermissionsRecommendedStep, location_name: "unusedPermissionsRecommendedStep"))
973
+ RecommendedStep.add_member(:unknown, Shapes::ShapeRef.new(shape: nil, location_name: 'unknown'))
974
+ RecommendedStep.add_member_subclass(:unused_permissions_recommended_step, Types::RecommendedStep::UnusedPermissionsRecommendedStep)
975
+ RecommendedStep.add_member_subclass(:unknown, Types::RecommendedStep::Unknown)
976
+ RecommendedStep.struct_class = Types::RecommendedStep
977
+
978
+ RecommendedStepList.member = Shapes::ShapeRef.new(shape: RecommendedStep)
979
+
917
980
  RegionList.member = Shapes::ShapeRef.new(shape: String)
918
981
 
919
982
  ResourceNotFoundException.add_member(:message, Shapes::ShapeRef.new(shape: String, required: true, location_name: "message"))
@@ -1055,6 +1118,12 @@ module Aws::AccessAnalyzer
1055
1118
  UnusedPermissionDetails.add_member(:last_accessed, Shapes::ShapeRef.new(shape: Timestamp, location_name: "lastAccessed"))
1056
1119
  UnusedPermissionDetails.struct_class = Types::UnusedPermissionDetails
1057
1120
 
1121
+ UnusedPermissionsRecommendedStep.add_member(:policy_updated_at, Shapes::ShapeRef.new(shape: Timestamp, location_name: "policyUpdatedAt"))
1122
+ UnusedPermissionsRecommendedStep.add_member(:recommended_action, Shapes::ShapeRef.new(shape: RecommendedRemediationAction, required: true, location_name: "recommendedAction"))
1123
+ UnusedPermissionsRecommendedStep.add_member(:recommended_policy, Shapes::ShapeRef.new(shape: String, location_name: "recommendedPolicy"))
1124
+ UnusedPermissionsRecommendedStep.add_member(:existing_policy_id, Shapes::ShapeRef.new(shape: String, location_name: "existingPolicyId"))
1125
+ UnusedPermissionsRecommendedStep.struct_class = Types::UnusedPermissionsRecommendedStep
1126
+
1058
1127
  UpdateArchiveRuleRequest.add_member(:analyzer_name, Shapes::ShapeRef.new(shape: Name, required: true, location: "uri", location_name: "analyzerName"))
1059
1128
  UpdateArchiveRuleRequest.add_member(:rule_name, Shapes::ShapeRef.new(shape: Name, required: true, location: "uri", location_name: "ruleName"))
1060
1129
  UpdateArchiveRuleRequest.add_member(:filter, Shapes::ShapeRef.new(shape: FilterCriteriaMap, required: true, location_name: "filter"))
@@ -1114,8 +1183,8 @@ module Aws::AccessAnalyzer
1114
1183
  api.metadata = {
1115
1184
  "apiVersion" => "2019-11-01",
1116
1185
  "endpointPrefix" => "access-analyzer",
1117
- "jsonVersion" => "1.1",
1118
1186
  "protocol" => "rest-json",
1187
+ "protocols" => ["rest-json"],
1119
1188
  "serviceFullName" => "Access Analyzer",
1120
1189
  "serviceId" => "AccessAnalyzer",
1121
1190
  "signatureVersion" => "v4",
@@ -1176,6 +1245,20 @@ module Aws::AccessAnalyzer
1176
1245
  o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
1177
1246
  end)
1178
1247
 
1248
+ api.add_operation(:check_no_public_access, Seahorse::Model::Operation.new.tap do |o|
1249
+ o.name = "CheckNoPublicAccess"
1250
+ o.http_method = "POST"
1251
+ o.http_request_uri = "/policy/check-no-public-access"
1252
+ o.input = Shapes::ShapeRef.new(shape: CheckNoPublicAccessRequest)
1253
+ o.output = Shapes::ShapeRef.new(shape: CheckNoPublicAccessResponse)
1254
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
1255
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerException)
1256
+ o.errors << Shapes::ShapeRef.new(shape: InvalidParameterException)
1257
+ o.errors << Shapes::ShapeRef.new(shape: UnprocessableEntityException)
1258
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
1259
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
1260
+ end)
1261
+
1179
1262
  api.add_operation(:create_access_preview, Seahorse::Model::Operation.new.tap do |o|
1180
1263
  o.name = "CreateAccessPreview"
1181
1264
  o.http_method = "PUT"
@@ -1246,6 +1329,18 @@ module Aws::AccessAnalyzer
1246
1329
  o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
1247
1330
  end)
1248
1331
 
1332
+ api.add_operation(:generate_finding_recommendation, Seahorse::Model::Operation.new.tap do |o|
1333
+ o.name = "GenerateFindingRecommendation"
1334
+ o.http_method = "POST"
1335
+ o.http_request_uri = "/recommendation/{id}"
1336
+ o.input = Shapes::ShapeRef.new(shape: GenerateFindingRecommendationRequest)
1337
+ o.output = Shapes::ShapeRef.new(shape: Shapes::StructureShape.new(struct_class: Aws::EmptyStructure))
1338
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
1339
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerException)
1340
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
1341
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
1342
+ end)
1343
+
1249
1344
  api.add_operation(:get_access_preview, Seahorse::Model::Operation.new.tap do |o|
1250
1345
  o.name = "GetAccessPreview"
1251
1346
  o.http_method = "GET"
@@ -1311,6 +1406,25 @@ module Aws::AccessAnalyzer
1311
1406
  o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
1312
1407
  end)
1313
1408
 
1409
+ api.add_operation(:get_finding_recommendation, Seahorse::Model::Operation.new.tap do |o|
1410
+ o.name = "GetFindingRecommendation"
1411
+ o.http_method = "GET"
1412
+ o.http_request_uri = "/recommendation/{id}"
1413
+ o.input = Shapes::ShapeRef.new(shape: GetFindingRecommendationRequest)
1414
+ o.output = Shapes::ShapeRef.new(shape: GetFindingRecommendationResponse)
1415
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
1416
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
1417
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerException)
1418
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
1419
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
1420
+ o[:pager] = Aws::Pager.new(
1421
+ limit_key: "max_results",
1422
+ tokens: {
1423
+ "next_token" => "next_token"
1424
+ }
1425
+ )
1426
+ end)
1427
+
1314
1428
  api.add_operation(:get_finding_v2, Seahorse::Model::Operation.new.tap do |o|
1315
1429
  o.name = "GetFindingV2"
1316
1430
  o.http_method = "GET"
@@ -68,6 +68,20 @@ module Aws::AccessAnalyzer
68
68
  end
69
69
  end
70
70
 
71
+ class CheckNoPublicAccess
72
+ def self.build(context)
73
+ unless context.config.regional_endpoint
74
+ endpoint = context.config.endpoint.to_s
75
+ end
76
+ Aws::AccessAnalyzer::EndpointParameters.new(
77
+ region: context.config.region,
78
+ use_dual_stack: context.config.use_dualstack_endpoint,
79
+ use_fips: context.config.use_fips_endpoint,
80
+ endpoint: endpoint,
81
+ )
82
+ end
83
+ end
84
+
71
85
  class CreateAccessPreview
72
86
  def self.build(context)
73
87
  unless context.config.regional_endpoint
@@ -138,6 +152,20 @@ module Aws::AccessAnalyzer
138
152
  end
139
153
  end
140
154
 
155
+ class GenerateFindingRecommendation
156
+ def self.build(context)
157
+ unless context.config.regional_endpoint
158
+ endpoint = context.config.endpoint.to_s
159
+ end
160
+ Aws::AccessAnalyzer::EndpointParameters.new(
161
+ region: context.config.region,
162
+ use_dual_stack: context.config.use_dualstack_endpoint,
163
+ use_fips: context.config.use_fips_endpoint,
164
+ endpoint: endpoint,
165
+ )
166
+ end
167
+ end
168
+
141
169
  class GetAccessPreview
142
170
  def self.build(context)
143
171
  unless context.config.regional_endpoint
@@ -208,6 +236,20 @@ module Aws::AccessAnalyzer
208
236
  end
209
237
  end
210
238
 
239
+ class GetFindingRecommendation
240
+ def self.build(context)
241
+ unless context.config.regional_endpoint
242
+ endpoint = context.config.endpoint.to_s
243
+ end
244
+ Aws::AccessAnalyzer::EndpointParameters.new(
245
+ region: context.config.region,
246
+ use_dual_stack: context.config.use_dualstack_endpoint,
247
+ use_fips: context.config.use_fips_endpoint,
248
+ endpoint: endpoint,
249
+ )
250
+ end
251
+ end
252
+
211
253
  class GetFindingV2
212
254
  def self.build(context)
213
255
  unless context.config.regional_endpoint
@@ -66,6 +66,8 @@ module Aws::AccessAnalyzer
66
66
  Aws::AccessAnalyzer::Endpoints::CheckAccessNotGranted.build(context)
67
67
  when :check_no_new_access
68
68
  Aws::AccessAnalyzer::Endpoints::CheckNoNewAccess.build(context)
69
+ when :check_no_public_access
70
+ Aws::AccessAnalyzer::Endpoints::CheckNoPublicAccess.build(context)
69
71
  when :create_access_preview
70
72
  Aws::AccessAnalyzer::Endpoints::CreateAccessPreview.build(context)
71
73
  when :create_analyzer
@@ -76,6 +78,8 @@ module Aws::AccessAnalyzer
76
78
  Aws::AccessAnalyzer::Endpoints::DeleteAnalyzer.build(context)
77
79
  when :delete_archive_rule
78
80
  Aws::AccessAnalyzer::Endpoints::DeleteArchiveRule.build(context)
81
+ when :generate_finding_recommendation
82
+ Aws::AccessAnalyzer::Endpoints::GenerateFindingRecommendation.build(context)
79
83
  when :get_access_preview
80
84
  Aws::AccessAnalyzer::Endpoints::GetAccessPreview.build(context)
81
85
  when :get_analyzed_resource
@@ -86,6 +90,8 @@ module Aws::AccessAnalyzer
86
90
  Aws::AccessAnalyzer::Endpoints::GetArchiveRule.build(context)
87
91
  when :get_finding
88
92
  Aws::AccessAnalyzer::Endpoints::GetFinding.build(context)
93
+ when :get_finding_recommendation
94
+ Aws::AccessAnalyzer::Endpoints::GetFindingRecommendation.build(context)
89
95
  when :get_finding_v2
90
96
  Aws::AccessAnalyzer::Endpoints::GetFindingV2.build(context)
91
97
  when :get_generated_policy
@@ -10,8 +10,8 @@
10
10
  module Aws::AccessAnalyzer
11
11
  module Types
12
12
 
13
- # Contains information about actions that define permissions to check
14
- # against a policy.
13
+ # Contains information about actions and resources that define
14
+ # permissions to check against a policy.
15
15
  #
16
16
  # @!attribute [rw] actions
17
17
  # A list of actions for the access permissions. Any strings that can
@@ -19,10 +19,17 @@ module Aws::AccessAnalyzer
19
19
  # actions to check.
20
20
  # @return [Array<String>]
21
21
  #
22
+ # @!attribute [rw] resources
23
+ # A list of resources for the access permissions. Any strings that can
24
+ # be used as a resource in an IAM policy can be used in the list of
25
+ # resources to check.
26
+ # @return [Array<String>]
27
+ #
22
28
  # @see http://docs.aws.amazon.com/goto/WebAPI/accessanalyzer-2019-11-01/Access AWS API Documentation
23
29
  #
24
30
  class Access < Struct.new(
25
- :actions)
31
+ :actions,
32
+ :resources)
26
33
  SENSITIVE = []
27
34
  include Aws::Structure
28
35
  end
@@ -575,7 +582,13 @@ module Aws::AccessAnalyzer
575
582
  #
576
583
  # @!attribute [rw] access
577
584
  # An access object containing the permissions that shouldn't be
578
- # granted by the specified policy.
585
+ # granted by the specified policy. If only actions are specified, IAM
586
+ # Access Analyzer checks for access of the actions on all resources in
587
+ # the policy. If only resources are specified, then IAM Access
588
+ # Analyzer checks which actions have access to the specified
589
+ # resources. If both actions and resources are specified, then IAM
590
+ # Access Analyzer checks which of the specified actions have access to
591
+ # the specified resources.
579
592
  # @return [Array<Types::Access>]
580
593
  #
581
594
  # @!attribute [rw] policy_type
@@ -682,6 +695,55 @@ module Aws::AccessAnalyzer
682
695
  include Aws::Structure
683
696
  end
684
697
 
698
+ # @!attribute [rw] policy_document
699
+ # The JSON policy document to evaluate for public access.
700
+ # @return [String]
701
+ #
702
+ # @!attribute [rw] resource_type
703
+ # The type of resource to evaluate for public access. For example, to
704
+ # check for public access to Amazon S3 buckets, you can choose
705
+ # `AWS::S3::Bucket` for the resource type.
706
+ #
707
+ # For resource types not supported as valid values, IAM Access
708
+ # Analyzer will return an error.
709
+ # @return [String]
710
+ #
711
+ # @see http://docs.aws.amazon.com/goto/WebAPI/accessanalyzer-2019-11-01/CheckNoPublicAccessRequest AWS API Documentation
712
+ #
713
+ class CheckNoPublicAccessRequest < Struct.new(
714
+ :policy_document,
715
+ :resource_type)
716
+ SENSITIVE = [:policy_document]
717
+ include Aws::Structure
718
+ end
719
+
720
+ # @!attribute [rw] result
721
+ # The result of the check for public access to the specified resource
722
+ # type. If the result is `PASS`, the policy doesn't allow public
723
+ # access to the specified resource type. If the result is `FAIL`, the
724
+ # policy might allow public access to the specified resource type.
725
+ # @return [String]
726
+ #
727
+ # @!attribute [rw] message
728
+ # The message indicating whether the specified policy allows public
729
+ # access to resources.
730
+ # @return [String]
731
+ #
732
+ # @!attribute [rw] reasons
733
+ # A list of reasons why the specified resource policy grants public
734
+ # access for the resource type.
735
+ # @return [Array<Types::ReasonSummary>]
736
+ #
737
+ # @see http://docs.aws.amazon.com/goto/WebAPI/accessanalyzer-2019-11-01/CheckNoPublicAccessResponse AWS API Documentation
738
+ #
739
+ class CheckNoPublicAccessResponse < Struct.new(
740
+ :result,
741
+ :message,
742
+ :reasons)
743
+ SENSITIVE = []
744
+ include Aws::Structure
745
+ end
746
+
685
747
  # Contains information about CloudTrail access.
686
748
  #
687
749
  # @!attribute [rw] trails
@@ -1687,6 +1749,28 @@ module Aws::AccessAnalyzer
1687
1749
  include Aws::Structure
1688
1750
  end
1689
1751
 
1752
+ # @!attribute [rw] analyzer_arn
1753
+ # The [ARN of the analyzer][1] used to generate the finding
1754
+ # recommendation.
1755
+ #
1756
+ #
1757
+ #
1758
+ # [1]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-getting-started.html#permission-resources
1759
+ # @return [String]
1760
+ #
1761
+ # @!attribute [rw] id
1762
+ # The unique ID for the finding recommendation.
1763
+ # @return [String]
1764
+ #
1765
+ # @see http://docs.aws.amazon.com/goto/WebAPI/accessanalyzer-2019-11-01/GenerateFindingRecommendationRequest AWS API Documentation
1766
+ #
1767
+ class GenerateFindingRecommendationRequest < Struct.new(
1768
+ :analyzer_arn,
1769
+ :id)
1770
+ SENSITIVE = []
1771
+ include Aws::Structure
1772
+ end
1773
+
1690
1774
  # Contains the text for the generated policy.
1691
1775
  #
1692
1776
  # @!attribute [rw] policy
@@ -1891,6 +1975,88 @@ module Aws::AccessAnalyzer
1891
1975
  include Aws::Structure
1892
1976
  end
1893
1977
 
1978
+ # @!attribute [rw] analyzer_arn
1979
+ # The [ARN of the analyzer][1] used to generate the finding
1980
+ # recommendation.
1981
+ #
1982
+ #
1983
+ #
1984
+ # [1]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-getting-started.html#permission-resources
1985
+ # @return [String]
1986
+ #
1987
+ # @!attribute [rw] id
1988
+ # The unique ID for the finding recommendation.
1989
+ # @return [String]
1990
+ #
1991
+ # @!attribute [rw] max_results
1992
+ # The maximum number of results to return in the response.
1993
+ # @return [Integer]
1994
+ #
1995
+ # @!attribute [rw] next_token
1996
+ # A token used for pagination of results returned.
1997
+ # @return [String]
1998
+ #
1999
+ # @see http://docs.aws.amazon.com/goto/WebAPI/accessanalyzer-2019-11-01/GetFindingRecommendationRequest AWS API Documentation
2000
+ #
2001
+ class GetFindingRecommendationRequest < Struct.new(
2002
+ :analyzer_arn,
2003
+ :id,
2004
+ :max_results,
2005
+ :next_token)
2006
+ SENSITIVE = []
2007
+ include Aws::Structure
2008
+ end
2009
+
2010
+ # @!attribute [rw] started_at
2011
+ # The time at which the retrieval of the finding recommendation was
2012
+ # started.
2013
+ # @return [Time]
2014
+ #
2015
+ # @!attribute [rw] completed_at
2016
+ # The time at which the retrieval of the finding recommendation was
2017
+ # completed.
2018
+ # @return [Time]
2019
+ #
2020
+ # @!attribute [rw] next_token
2021
+ # A token used for pagination of results returned.
2022
+ # @return [String]
2023
+ #
2024
+ # @!attribute [rw] error
2025
+ # Detailed information about the reason that the retrieval of a
2026
+ # recommendation for the finding failed.
2027
+ # @return [Types::RecommendationError]
2028
+ #
2029
+ # @!attribute [rw] resource_arn
2030
+ # The ARN of the resource of the finding.
2031
+ # @return [String]
2032
+ #
2033
+ # @!attribute [rw] recommended_steps
2034
+ # A group of recommended steps for the finding.
2035
+ # @return [Array<Types::RecommendedStep>]
2036
+ #
2037
+ # @!attribute [rw] recommendation_type
2038
+ # The type of recommendation for the finding.
2039
+ # @return [String]
2040
+ #
2041
+ # @!attribute [rw] status
2042
+ # The status of the retrieval of the finding recommendation.
2043
+ # @return [String]
2044
+ #
2045
+ # @see http://docs.aws.amazon.com/goto/WebAPI/accessanalyzer-2019-11-01/GetFindingRecommendationResponse AWS API Documentation
2046
+ #
2047
+ class GetFindingRecommendationResponse < Struct.new(
2048
+ :started_at,
2049
+ :completed_at,
2050
+ :next_token,
2051
+ :error,
2052
+ :resource_arn,
2053
+ :recommended_steps,
2054
+ :recommendation_type,
2055
+ :status)
2056
+ SENSITIVE = []
2057
+ include Aws::Structure
2058
+ end
2059
+
1894
2060
  # Retrieves a finding.
1895
2061
  #
1896
2062
  # @!attribute [rw] analyzer_arn
@@ -3167,6 +3333,50 @@ module Aws::AccessAnalyzer
3167
3333
  include Aws::Structure
3168
3334
  end
3169
3335
 
3336
+ # Contains information about the reason that the retrieval of a
3337
+ # recommendation for a finding failed.
3338
+ #
3339
+ # @!attribute [rw] code
3340
+ # The error code for a failed retrieval of a recommendation for a
3341
+ # finding.
3342
+ # @return [String]
3343
+ #
3344
+ # @!attribute [rw] message
3345
+ # The error message for a failed retrieval of a recommendation for a
3346
+ # finding.
3347
+ # @return [String]
3348
+ #
3349
+ # @see http://docs.aws.amazon.com/goto/WebAPI/accessanalyzer-2019-11-01/RecommendationError AWS API Documentation
3350
+ #
3351
+ class RecommendationError < Struct.new(
3352
+ :code,
3353
+ :message)
3354
+ SENSITIVE = []
3355
+ include Aws::Structure
3356
+ end
3357
+
3358
+ # Contains information about a recommended step for an unused access
3359
+ # analyzer finding.
3360
+ #
3361
+ # @note RecommendedStep is a union - when returned from an API call exactly one value will be set and the returned type will be a subclass of RecommendedStep corresponding to the set member.
3362
+ #
3363
+ # @!attribute [rw] unused_permissions_recommended_step
3364
+ # A recommended step for an unused permissions finding.
3365
+ # @return [Types::UnusedPermissionsRecommendedStep]
3366
+ #
3367
+ # @see http://docs.aws.amazon.com/goto/WebAPI/accessanalyzer-2019-11-01/RecommendedStep AWS API Documentation
3368
+ #
3369
+ class RecommendedStep < Struct.new(
3370
+ :unused_permissions_recommended_step,
3371
+ :unknown)
3372
+ SENSITIVE = []
3373
+ include Aws::Structure
3374
+ include Aws::Structure::Union
3375
+
3376
+ class UnusedPermissionsRecommendedStep < RecommendedStep; end
3377
+ class Unknown < RecommendedStep; end
3378
+ end
3379
+
3170
3380
  # The specified resource could not be found.
3171
3381
  #
3172
3382
  # @!attribute [rw] message
@@ -3930,7 +4140,7 @@ module Aws::AccessAnalyzer
3930
4140
  # @return [String]
3931
4141
  #
3932
4142
  # @!attribute [rw] last_accessed
3933
- # The time at which the permission last accessed.
4143
+ # The time at which the permission was last accessed.
3934
4144
  # @return [Time]
3935
4145
  #
3936
4146
  # @see http://docs.aws.amazon.com/goto/WebAPI/accessanalyzer-2019-11-01/UnusedPermissionDetails AWS API Documentation
@@ -3943,6 +4153,41 @@ module Aws::AccessAnalyzer
3943
4153
  include Aws::Structure
3944
4154
  end
3945
4155
 
4156
+ # Contains information about the action to take for a policy in an
4157
+ # unused permissions finding.
4158
+ #
4159
+ # @!attribute [rw] policy_updated_at
4160
+ # The time at which the existing policy for the unused permissions
4161
+ # finding was last updated.
4162
+ # @return [Time]
4163
+ #
4164
+ # @!attribute [rw] recommended_action
4165
+ # A recommendation of whether to create or detach a policy for an
4166
+ # unused permissions finding.
4167
+ # @return [String]
4168
+ #
4169
+ # @!attribute [rw] recommended_policy
4170
+ # If the recommended action for the unused permissions finding is to
4171
+ # replace the existing policy, the contents of the recommended policy
4172
+ # to replace the policy specified in the `existingPolicyId` field.
4173
+ # @return [String]
4174
+ #
4175
+ # @!attribute [rw] existing_policy_id
4176
+ # If the recommended action for the unused permissions finding is to
4177
+ # detach a policy, the ID of an existing policy to be detached.
4178
+ # @return [String]
4179
+ #
4180
+ # @see http://docs.aws.amazon.com/goto/WebAPI/accessanalyzer-2019-11-01/UnusedPermissionsRecommendedStep AWS API Documentation
4181
+ #
4182
+ class UnusedPermissionsRecommendedStep < Struct.new(
4183
+ :policy_updated_at,
4184
+ :recommended_action,
4185
+ :recommended_policy,
4186
+ :existing_policy_id)
4187
+ SENSITIVE = []
4188
+ include Aws::Structure
4189
+ end
4190
+
3946
4191
  # Updates the specified archive rule.
3947
4192
  #
3948
4193
  # @!attribute [rw] analyzer_name
@@ -52,6 +52,6 @@ require_relative 'aws-sdk-accessanalyzer/customizations'
52
52
  # @!group service
53
53
  module Aws::AccessAnalyzer
54
54
 
55
- GEM_VERSION = '1.50.0'
55
+ GEM_VERSION = '1.52.0'
56
56
 
57
57
  end