Skip to content

Commit d620e22

Browse files
The GetControl API now surfaces a control's Severity, CreateTime, and Identifier for a control's Implementation. The ListControls API now surfaces a control's Behavior, Severity, CreateTime, and Identifier for a control's Implementation.
1 parent 4b08d39 commit d620e22

File tree

13 files changed

+557
-4
lines changed

13 files changed

+557
-4
lines changed

generator/ServiceModels/controlcatalog/controlcatalog-2018-05-10.api.json

Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,15 @@
190190
"REGIONAL"
191191
]
192192
},
193+
"ControlSeverity":{
194+
"type":"string",
195+
"enum":[
196+
"LOW",
197+
"MEDIUM",
198+
"HIGH",
199+
"CRITICAL"
200+
]
201+
},
193202
"ControlSummary":{
194203
"type":"structure",
195204
"required":[
@@ -200,7 +209,11 @@
200209
"members":{
201210
"Arn":{"shape":"ControlArn"},
202211
"Name":{"shape":"String"},
203-
"Description":{"shape":"String"}
212+
"Description":{"shape":"String"},
213+
"Behavior":{"shape":"ControlBehavior"},
214+
"Severity":{"shape":"ControlSeverity"},
215+
"Implementation":{"shape":"ImplementationSummary"},
216+
"CreateTime":{"shape":"Timestamp"}
204217
}
205218
},
206219
"Controls":{
@@ -269,16 +282,33 @@
269282
"Name":{"shape":"String"},
270283
"Description":{"shape":"String"},
271284
"Behavior":{"shape":"ControlBehavior"},
285+
"Severity":{"shape":"ControlSeverity"},
272286
"RegionConfiguration":{"shape":"RegionConfiguration"},
273287
"Implementation":{"shape":"ImplementationDetails"},
274-
"Parameters":{"shape":"ControlParameters"}
288+
"Parameters":{"shape":"ControlParameters"},
289+
"CreateTime":{"shape":"Timestamp"}
275290
}
276291
},
277292
"ImplementationDetails":{
278293
"type":"structure",
279294
"required":["Type"],
280295
"members":{
281-
"Type":{"shape":"ImplementationType"}
296+
"Type":{"shape":"ImplementationType"},
297+
"Identifier":{"shape":"ImplementationIdentifier"}
298+
}
299+
},
300+
"ImplementationIdentifier":{
301+
"type":"string",
302+
"max":256,
303+
"min":1,
304+
"pattern":"[a-z0-9-]+"
305+
},
306+
"ImplementationSummary":{
307+
"type":"structure",
308+
"required":["Type"],
309+
"members":{
310+
"Type":{"shape":"ImplementationType"},
311+
"Identifier":{"shape":"ImplementationIdentifier"}
282312
}
283313
},
284314
"ImplementationType":{

generator/ServiceModels/controlcatalog/controlcatalog-2018-05-10.docs.json

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@
6262
"ControlBehavior": {
6363
"base": null,
6464
"refs": {
65+
"ControlSummary$Behavior": "<p>An enumerated type, with the following possible values:</p>",
6566
"GetControlResponse$Behavior": "<p>A term that identifies the control's functional behavior. One of <code>Preventive</code>, <code>Detective</code>, <code>Proactive</code> </p>"
6667
}
6768
},
@@ -83,6 +84,13 @@
8384
"RegionConfiguration$Scope": "<p>The coverage of the control, if deployed. Scope is an enumerated type, with value <code>Regional</code>, or <code>Global</code>. A control with Global scope is effective in all Amazon Web Services Regions, regardless of the Region from which it is enabled, or to which it is deployed. A control implemented by an SCP is usually Global in scope. A control with Regional scope has operations that are restricted specifically to the Region from which it is enabled and to which it is deployed. Controls implemented by Config rules and CloudFormation hooks usually are Regional in scope. Security Hub controls usually are Regional in scope.</p>"
8485
}
8586
},
87+
"ControlSeverity": {
88+
"base": null,
89+
"refs": {
90+
"ControlSummary$Severity": "<p>An enumerated type, with the following possible values:</p>",
91+
"GetControlResponse$Severity": "<p>An enumerated type, with the following possible values:</p>"
92+
}
93+
},
8694
"ControlSummary": {
8795
"base": "<p>Overview of information about a control.</p>",
8896
"refs": {
@@ -149,10 +157,24 @@
149157
"GetControlResponse$Implementation": "<p>Returns information about the control, as an <code>ImplementationDetails</code> object that shows the underlying implementation type for a control.</p>"
150158
}
151159
},
160+
"ImplementationIdentifier": {
161+
"base": null,
162+
"refs": {
163+
"ImplementationDetails$Identifier": "<p>A service-specific identifier for the control, assigned by the service that implemented the control. For example, this identifier could be an Amazon Web Services Config Rule ID or a Security Hub Control ID.</p>",
164+
"ImplementationSummary$Identifier": "<p>The identifier originally assigned by the Amazon Web Services service that implements the control. For example, <code>CODEPIPELINE_DEPLOYMENT_COUNT_CHECK</code>.</p>"
165+
}
166+
},
167+
"ImplementationSummary": {
168+
"base": "<p>A summary of how the control is implemented, including the Amazon Web Services service that enforces the control and its service-specific identifier. For example, the value of this field could indicate that the control is implemented as an Amazon Web Services Config Rule or an Amazon Web Services Security Hub control.</p>",
169+
"refs": {
170+
"ControlSummary$Implementation": "<p>An object of type <code>ImplementationSummary</code> that describes how the control is implemented.</p>"
171+
}
172+
},
152173
"ImplementationType": {
153174
"base": null,
154175
"refs": {
155-
"ImplementationDetails$Type": "<p>A string that describes a control's implementation type.</p>"
176+
"ImplementationDetails$Type": "<p>A string that describes a control's implementation type.</p>",
177+
"ImplementationSummary$Type": "<p>A string that represents the Amazon Web Services service that implements this control. For example, a value of <code>AWS::Config::ConfigRule</code> indicates that the control is implemented by Amazon Web Services Config, and <code>AWS::SecurityHub::SecurityControl</code> indicates implementation by Amazon Web Services Security Hub.</p>"
156178
}
157179
},
158180
"InternalServerException": {
@@ -325,8 +347,10 @@
325347
"refs": {
326348
"CommonControlSummary$CreateTime": "<p>The time when the common control was created.</p>",
327349
"CommonControlSummary$LastUpdateTime": "<p>The time when the common control was most recently updated.</p>",
350+
"ControlSummary$CreateTime": "<p>A timestamp that notes the time when the control was released (start of its life) as a governance capability in Amazon Web Services.</p>",
328351
"DomainSummary$CreateTime": "<p>The time when the domain was created.</p>",
329352
"DomainSummary$LastUpdateTime": "<p>The time when the domain was most recently updated.</p>",
353+
"GetControlResponse$CreateTime": "<p>A timestamp that notes the time when the control was released (start of its life) as a governance capability in Amazon Web Services.</p>",
330354
"ObjectiveSummary$CreateTime": "<p>The time when the objective was created.</p>",
331355
"ObjectiveSummary$LastUpdateTime": "<p>The time when the objective was most recently updated.</p>"
332356
}

generator/ServiceModels/controlcatalog/controlcatalog-2018-05-10.normal.json

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,15 @@
240240
"REGIONAL"
241241
]
242242
},
243+
"ControlSeverity":{
244+
"type":"string",
245+
"enum":[
246+
"LOW",
247+
"MEDIUM",
248+
"HIGH",
249+
"CRITICAL"
250+
]
251+
},
243252
"ControlSummary":{
244253
"type":"structure",
245254
"required":[
@@ -259,6 +268,22 @@
259268
"Description":{
260269
"shape":"String",
261270
"documentation":"<p>A description of the control, as it may appear in the console. Describes the functionality of the control.</p>"
271+
},
272+
"Behavior":{
273+
"shape":"ControlBehavior",
274+
"documentation":"<p>An enumerated type, with the following possible values:</p>"
275+
},
276+
"Severity":{
277+
"shape":"ControlSeverity",
278+
"documentation":"<p>An enumerated type, with the following possible values:</p>"
279+
},
280+
"Implementation":{
281+
"shape":"ImplementationSummary",
282+
"documentation":"<p>An object of type <code>ImplementationSummary</code> that describes how the control is implemented.</p>"
283+
},
284+
"CreateTime":{
285+
"shape":"Timestamp",
286+
"documentation":"<p>A timestamp that notes the time when the control was released (start of its life) as a governance capability in Amazon Web Services.</p>"
262287
}
263288
},
264289
"documentation":"<p>Overview of information about a control.</p>"
@@ -364,6 +389,10 @@
364389
"shape":"ControlBehavior",
365390
"documentation":"<p>A term that identifies the control's functional behavior. One of <code>Preventive</code>, <code>Detective</code>, <code>Proactive</code> </p>"
366391
},
392+
"Severity":{
393+
"shape":"ControlSeverity",
394+
"documentation":"<p>An enumerated type, with the following possible values:</p>"
395+
},
367396
"RegionConfiguration":{"shape":"RegionConfiguration"},
368397
"Implementation":{
369398
"shape":"ImplementationDetails",
@@ -372,6 +401,10 @@
372401
"Parameters":{
373402
"shape":"ControlParameters",
374403
"documentation":"<p>Returns an array of <code>ControlParameter</code> objects that specify the parameters a control supports. An empty list is returned for controls that don’t support parameters. </p>"
404+
},
405+
"CreateTime":{
406+
"shape":"Timestamp",
407+
"documentation":"<p>A timestamp that notes the time when the control was released (start of its life) as a governance capability in Amazon Web Services.</p>"
375408
}
376409
}
377410
},
@@ -382,10 +415,35 @@
382415
"Type":{
383416
"shape":"ImplementationType",
384417
"documentation":"<p>A string that describes a control's implementation type.</p>"
418+
},
419+
"Identifier":{
420+
"shape":"ImplementationIdentifier",
421+
"documentation":"<p>A service-specific identifier for the control, assigned by the service that implemented the control. For example, this identifier could be an Amazon Web Services Config Rule ID or a Security Hub Control ID.</p>"
385422
}
386423
},
387424
"documentation":"<p>An object that describes the implementation type for a control.</p> <p>Our <code>ImplementationDetails</code> <code>Type</code> format has three required segments:</p> <ul> <li> <p> <code>SERVICE-PROVIDER::SERVICE-NAME::RESOURCE-NAME</code> </p> </li> </ul> <p>For example, <code>AWS::Config::ConfigRule</code> <b>or</b> <code>AWS::SecurityHub::SecurityControl</code> resources have the format with three required segments.</p> <p>Our <code>ImplementationDetails</code> <code>Type</code> format has an optional fourth segment, which is present for applicable implementation types. The format is as follows: </p> <ul> <li> <p> <code>SERVICE-PROVIDER::SERVICE-NAME::RESOURCE-NAME::RESOURCE-TYPE-DESCRIPTION</code> </p> </li> </ul> <p>For example, <code>AWS::Organizations::Policy::SERVICE_CONTROL_POLICY</code> <b>or</b> <code>AWS::CloudFormation::Type::HOOK</code> have the format with four segments.</p> <p>Although the format is similar, the values for the <code>Type</code> field do not match any Amazon Web Services CloudFormation values.</p>"
388425
},
426+
"ImplementationIdentifier":{
427+
"type":"string",
428+
"max":256,
429+
"min":1,
430+
"pattern":"[a-z0-9-]+"
431+
},
432+
"ImplementationSummary":{
433+
"type":"structure",
434+
"required":["Type"],
435+
"members":{
436+
"Type":{
437+
"shape":"ImplementationType",
438+
"documentation":"<p>A string that represents the Amazon Web Services service that implements this control. For example, a value of <code>AWS::Config::ConfigRule</code> indicates that the control is implemented by Amazon Web Services Config, and <code>AWS::SecurityHub::SecurityControl</code> indicates implementation by Amazon Web Services Security Hub.</p>"
439+
},
440+
"Identifier":{
441+
"shape":"ImplementationIdentifier",
442+
"documentation":"<p>The identifier originally assigned by the Amazon Web Services service that implements the control. For example, <code>CODEPIPELINE_DEPLOYMENT_COUNT_CHECK</code>.</p>"
443+
}
444+
},
445+
"documentation":"<p>A summary of how the control is implemented, including the Amazon Web Services service that enforces the control and its service-specific identifier. For example, the value of this field could indicate that the control is implemented as an Amazon Web Services Config Rule or an Amazon Web Services Security Hub control.</p>"
446+
},
389447
"ImplementationType":{
390448
"type":"string",
391449
"max":2048,

sdk/code-analysis/ServiceAnalysis/ControlCatalog/Generated/PropertyValueRules.xml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,12 +108,30 @@
108108
<max>2048</max>
109109
<pattern>arn:(aws(?:[-a-z]*)?):controlcatalog:::domain/[0-9a-z]+</pattern>
110110
</property-value-rule>
111+
<property-value-rule>
112+
<property>Amazon.ControlCatalog.Model.ImplementationDetails.Identifier</property>
113+
<min>1</min>
114+
<max>256</max>
115+
<pattern>[a-z0-9-]+</pattern>
116+
</property-value-rule>
111117
<property-value-rule>
112118
<property>Amazon.ControlCatalog.Model.ImplementationDetails.Type</property>
113119
<min>7</min>
114120
<max>2048</max>
115121
<pattern>[A-Za-z0-9]+(::[A-Za-z0-9_]+){2,3}</pattern>
116122
</property-value-rule>
123+
<property-value-rule>
124+
<property>Amazon.ControlCatalog.Model.ImplementationSummary.Identifier</property>
125+
<min>1</min>
126+
<max>256</max>
127+
<pattern>[a-z0-9-]+</pattern>
128+
</property-value-rule>
129+
<property-value-rule>
130+
<property>Amazon.ControlCatalog.Model.ImplementationSummary.Type</property>
131+
<min>7</min>
132+
<max>2048</max>
133+
<pattern>[A-Za-z0-9]+(::[A-Za-z0-9_]+){2,3}</pattern>
134+
</property-value-rule>
117135
<property-value-rule>
118136
<property>Amazon.ControlCatalog.Model.ObjectiveResourceFilter.Arn</property>
119137
<min>36</min>

sdk/src/Services/ControlCatalog/Generated/Model/ControlSummary.cs

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,12 @@ namespace Amazon.ControlCatalog.Model
3535
public partial class ControlSummary
3636
{
3737
private string _arn;
38+
private ControlBehavior _behavior;
39+
private DateTime? _createTime;
3840
private string _description;
41+
private ImplementationSummary _implementation;
3942
private string _name;
43+
private ControlSeverity _severity;
4044

4145
/// <summary>
4246
/// Gets and sets the property Arn.
@@ -57,6 +61,43 @@ internal bool IsSetArn()
5761
return this._arn != null;
5862
}
5963

64+
/// <summary>
65+
/// Gets and sets the property Behavior.
66+
/// <para>
67+
/// An enumerated type, with the following possible values:
68+
/// </para>
69+
/// </summary>
70+
public ControlBehavior Behavior
71+
{
72+
get { return this._behavior; }
73+
set { this._behavior = value; }
74+
}
75+
76+
// Check to see if Behavior property is set
77+
internal bool IsSetBehavior()
78+
{
79+
return this._behavior != null;
80+
}
81+
82+
/// <summary>
83+
/// Gets and sets the property CreateTime.
84+
/// <para>
85+
/// A timestamp that notes the time when the control was released (start of its life)
86+
/// as a governance capability in Amazon Web Services.
87+
/// </para>
88+
/// </summary>
89+
public DateTime CreateTime
90+
{
91+
get { return this._createTime.GetValueOrDefault(); }
92+
set { this._createTime = value; }
93+
}
94+
95+
// Check to see if CreateTime property is set
96+
internal bool IsSetCreateTime()
97+
{
98+
return this._createTime.HasValue;
99+
}
100+
60101
/// <summary>
61102
/// Gets and sets the property Description.
62103
/// <para>
@@ -77,6 +118,24 @@ internal bool IsSetDescription()
77118
return this._description != null;
78119
}
79120

121+
/// <summary>
122+
/// Gets and sets the property Implementation.
123+
/// <para>
124+
/// An object of type <c>ImplementationSummary</c> that describes how the control is implemented.
125+
/// </para>
126+
/// </summary>
127+
public ImplementationSummary Implementation
128+
{
129+
get { return this._implementation; }
130+
set { this._implementation = value; }
131+
}
132+
133+
// Check to see if Implementation property is set
134+
internal bool IsSetImplementation()
135+
{
136+
return this._implementation != null;
137+
}
138+
80139
/// <summary>
81140
/// Gets and sets the property Name.
82141
/// <para>
@@ -96,5 +155,23 @@ internal bool IsSetName()
96155
return this._name != null;
97156
}
98157

158+
/// <summary>
159+
/// Gets and sets the property Severity.
160+
/// <para>
161+
/// An enumerated type, with the following possible values:
162+
/// </para>
163+
/// </summary>
164+
public ControlSeverity Severity
165+
{
166+
get { return this._severity; }
167+
set { this._severity = value; }
168+
}
169+
170+
// Check to see if Severity property is set
171+
internal bool IsSetSeverity()
172+
{
173+
return this._severity != null;
174+
}
175+
99176
}
100177
}

0 commit comments

Comments
 (0)