Class EvaluationResult
- All Implemented Interfaces:
Serializable,SdkPojo,ToCopyableBuilder<EvaluationResult.Builder,EvaluationResult>
Contains the results of a simulation.
This data type is used by the return parameter of
SimulateCustomPolicy
and
SimulatePrincipalPolicy
.
The simulator now returns a single EvaluationResult per action, regardless of how many resource ARNs are
provided. Previously, simulating one action against N resources returned N evaluation results, each containing the
same aggregate decision. The top-level fields (EvalDecision, MatchedStatements,
MissingContextValues, EvalDecisionDetails) now represent the aggregate decision
across all requested resources. The top-level EvalDecision reflects the most restrictive decision across
all resources (for example, if any resource produces explicitDeny, the top-level decision is
explicitDeny).
To see the decision for each individual resource, use ResourceSpecificResults. If your application
parses evaluation results per resource ARN, update your code to read per-resource decisions from
ResourceSpecificResults rather than from the top-level result.
- See Also:
-
Nested Class Summary
Nested Classes -
Method Summary
Modifier and TypeMethodDescriptionstatic EvaluationResult.Builderbuilder()final booleanfinal booleanequalsBySdkFields(Object obj) Indicates whether some other object is "equal to" this one by SDK fields.final StringThe name of the API operation tested on the indicated resource.The result of the simulation.final StringThe result of the simulation.Additional details about the results of the cross-account evaluation decision.Additional details about the results of the cross-account evaluation decision.final StringThe ARN template for the simulated resource type (for example,arn:${Partition}:s3:::${BucketName}/${KeyName}), or*if no ARN format is defined for the action.final <T> Optional<T> getValueForField(String fieldName, Class<T> clazz) final booleanFor responses, this returns true if the service returned a value for the EvalDecisionDetails property.final inthashCode()final booleanFor responses, this returns true if the service returned a value for the MatchedStatements property.final booleanFor responses, this returns true if the service returned a value for the MissingContextValues property.final booleanFor responses, this returns true if the service returned a value for the ResourceSpecificResults property.A list of the statements in the input policies that determine the result for this scenario.A list of context keys that are required by the included input policies but that were not provided by one of the input parameters.A structure that details how Organizations and its service control policies affect the results of the simulation.Contains information about the effect that a permissions boundary has on a policy simulation when the boundary is applied to an IAM entity.final List<ResourceSpecificResult> The individual results of the simulation of the API operation specified in EvalActionName on each resource.static Class<? extends EvaluationResult.Builder> Take this object and create a builder that contains all of the current property values of this object.final StringtoString()Returns a string representation of this object.Methods inherited from interface software.amazon.awssdk.utils.builder.ToCopyableBuilder
copy
-
Method Details
-
evalActionName
The name of the API operation tested on the indicated resource.
- Returns:
- The name of the API operation tested on the indicated resource.
-
evalResourceName
The ARN template for the simulated resource type (for example,
arn:${Partition}:s3:::${BucketName}/${KeyName}), or*if no ARN format is defined for the action. This is not a specific customer-provided resource ARN. To find the decision for a specific resource, useResourceSpecificResults.If you previously relied on
EvalResourceNameto identify which specific resource a result applies to, you must now use theEvalResourceNamefield within individual entries inResourceSpecificResultsinstead.- Returns:
- The ARN template for the simulated resource type (for example,
arn:${Partition}:s3:::${BucketName}/${KeyName}), or*if no ARN format is defined for the action. This is not a specific customer-provided resource ARN. To find the decision for a specific resource, useResourceSpecificResults.If you previously relied on
EvalResourceNameto identify which specific resource a result applies to, you must now use theEvalResourceNamefield within individual entries inResourceSpecificResultsinstead.
-
evalDecision
The result of the simulation.
If the service returns an enum value that is not available in the current SDK version,
evalDecisionwill returnPolicyEvaluationDecisionType.UNKNOWN_TO_SDK_VERSION. The raw value returned by the service is available fromevalDecisionAsString().- Returns:
- The result of the simulation.
- See Also:
-
evalDecisionAsString
The result of the simulation.
If the service returns an enum value that is not available in the current SDK version,
evalDecisionwill returnPolicyEvaluationDecisionType.UNKNOWN_TO_SDK_VERSION. The raw value returned by the service is available fromevalDecisionAsString().- Returns:
- The result of the simulation.
- See Also:
-
hasMatchedStatements
public final boolean hasMatchedStatements()For responses, this returns true if the service returned a value for the MatchedStatements property. This DOES NOT check that the value is non-empty (for which, you should check theisEmpty()method on the property). This is useful because the SDK will never return a null collection or map, but you may need to differentiate between the service returning nothing (or null) and the service returning an empty collection or map. For requests, this returns true if a value for the property was specified in the request builder, and false if a value was not specified. -
matchedStatements
A list of the statements in the input policies that determine the result for this scenario. Remember that even if multiple statements allow the operation on the resource, if only one statement denies that operation, then the explicit deny overrides any allow. In addition, the deny statement is the only entry included in the result.
In the top-level result, this field contains the union of matched statements across all requested resources. Only statements that contributed to the reported decision are included. For per-resource matched statements, see
ResourceSpecificResults. This field doesn't include statements from service control policies (SCPs). Only statements from identity-based and resource-based policies appear here.Attempts to modify the collection returned by this method will result in an UnsupportedOperationException.
This method will never return null. If you would like to know whether the service returned this field (so that you can differentiate between null and empty), you can use the
hasMatchedStatements()method.- Returns:
- A list of the statements in the input policies that determine the result for this scenario. Remember that
even if multiple statements allow the operation on the resource, if only one statement denies that
operation, then the explicit deny overrides any allow. In addition, the deny statement is the only entry
included in the result.
In the top-level result, this field contains the union of matched statements across all requested resources. Only statements that contributed to the reported decision are included. For per-resource matched statements, see
ResourceSpecificResults. This field doesn't include statements from service control policies (SCPs). Only statements from identity-based and resource-based policies appear here.
-
hasMissingContextValues
public final boolean hasMissingContextValues()For responses, this returns true if the service returned a value for the MissingContextValues property. This DOES NOT check that the value is non-empty (for which, you should check theisEmpty()method on the property). This is useful because the SDK will never return a null collection or map, but you may need to differentiate between the service returning nothing (or null) and the service returning an empty collection or map. For requests, this returns true if a value for the property was specified in the request builder, and false if a value was not specified. -
missingContextValues
A list of context keys that are required by the included input policies but that were not provided by one of the input parameters. This list is used when the resource in a simulation is "*", either explicitly, or when the
ResourceArnsparameter blank. If you include a list of resources, then any missing context values are instead included under theResourceSpecificResultssection. To discover the context keys used by a set of policies, you can call GetContextKeysForCustomPolicy or GetContextKeysForPrincipalPolicy.In the top-level result, this field contains the deduplicated set of missing context values across all requested resources. This field doesn't include context keys referenced by service control policies (SCPs). Only context keys referenced by identity-based and resource-based policies appear here.
Attempts to modify the collection returned by this method will result in an UnsupportedOperationException.
This method will never return null. If you would like to know whether the service returned this field (so that you can differentiate between null and empty), you can use the
hasMissingContextValues()method.- Returns:
- A list of context keys that are required by the included input policies but that were not provided by one
of the input parameters. This list is used when the resource in a simulation is "*", either explicitly,
or when the
ResourceArnsparameter blank. If you include a list of resources, then any missing context values are instead included under theResourceSpecificResultssection. To discover the context keys used by a set of policies, you can call GetContextKeysForCustomPolicy or GetContextKeysForPrincipalPolicy.In the top-level result, this field contains the deduplicated set of missing context values across all requested resources. This field doesn't include context keys referenced by service control policies (SCPs). Only context keys referenced by identity-based and resource-based policies appear here.
-
organizationsDecisionDetail
A structure that details how Organizations and its service control policies affect the results of the simulation. Only applies if the simulated user's account is part of an organization.
For resources that don't support organization-level evaluation, this field is omitted from the top-level result. For per-resource details, see
ResourceSpecificResults.- Returns:
- A structure that details how Organizations and its service control policies affect the results of the
simulation. Only applies if the simulated user's account is part of an organization.
For resources that don't support organization-level evaluation, this field is omitted from the top-level result. For per-resource details, see
ResourceSpecificResults.
-
permissionsBoundaryDecisionDetail
Contains information about the effect that a permissions boundary has on a policy simulation when the boundary is applied to an IAM entity.
- Returns:
- Contains information about the effect that a permissions boundary has on a policy simulation when the boundary is applied to an IAM entity.
-
evalDecisionDetails
Additional details about the results of the cross-account evaluation decision. This parameter is populated for only cross-account simulations. It contains a brief summary of how each policy type contributes to the final evaluation decision.
In the top-level result, this map reports the most restrictive decision per policy type across all requested resources.
If the simulation evaluates policies within the same account and includes a resource ARN, then the parameter is present but the response is empty. If the simulation evaluates policies within the same account and specifies all resources (
*), then the parameter is not returned.When you make a cross-account request, Amazon Web Services evaluates the request in the trusting account and the trusted account. The request is allowed only if both evaluations return
true. For more information about how policies are evaluated, see Evaluating policies within a single account.If an Organizations SCP included in the evaluation denies access, the simulation ends. In this case, policy evaluation does not proceed any further and this parameter is not returned.
Attempts to modify the collection returned by this method will result in an UnsupportedOperationException.
This method will never return null. If you would like to know whether the service returned this field (so that you can differentiate between null and empty), you can use the
hasEvalDecisionDetails()method.- Returns:
- Additional details about the results of the cross-account evaluation decision. This parameter is
populated for only cross-account simulations. It contains a brief summary of how each policy type
contributes to the final evaluation decision.
In the top-level result, this map reports the most restrictive decision per policy type across all requested resources.
If the simulation evaluates policies within the same account and includes a resource ARN, then the parameter is present but the response is empty. If the simulation evaluates policies within the same account and specifies all resources (
*), then the parameter is not returned.When you make a cross-account request, Amazon Web Services evaluates the request in the trusting account and the trusted account. The request is allowed only if both evaluations return
true. For more information about how policies are evaluated, see Evaluating policies within a single account.If an Organizations SCP included in the evaluation denies access, the simulation ends. In this case, policy evaluation does not proceed any further and this parameter is not returned.
-
hasEvalDecisionDetails
public final boolean hasEvalDecisionDetails()For responses, this returns true if the service returned a value for the EvalDecisionDetails property. This DOES NOT check that the value is non-empty (for which, you should check theisEmpty()method on the property). This is useful because the SDK will never return a null collection or map, but you may need to differentiate between the service returning nothing (or null) and the service returning an empty collection or map. For requests, this returns true if a value for the property was specified in the request builder, and false if a value was not specified. -
evalDecisionDetailsAsStrings
Additional details about the results of the cross-account evaluation decision. This parameter is populated for only cross-account simulations. It contains a brief summary of how each policy type contributes to the final evaluation decision.
In the top-level result, this map reports the most restrictive decision per policy type across all requested resources.
If the simulation evaluates policies within the same account and includes a resource ARN, then the parameter is present but the response is empty. If the simulation evaluates policies within the same account and specifies all resources (
*), then the parameter is not returned.When you make a cross-account request, Amazon Web Services evaluates the request in the trusting account and the trusted account. The request is allowed only if both evaluations return
true. For more information about how policies are evaluated, see Evaluating policies within a single account.If an Organizations SCP included in the evaluation denies access, the simulation ends. In this case, policy evaluation does not proceed any further and this parameter is not returned.
Attempts to modify the collection returned by this method will result in an UnsupportedOperationException.
This method will never return null. If you would like to know whether the service returned this field (so that you can differentiate between null and empty), you can use the
hasEvalDecisionDetails()method.- Returns:
- Additional details about the results of the cross-account evaluation decision. This parameter is
populated for only cross-account simulations. It contains a brief summary of how each policy type
contributes to the final evaluation decision.
In the top-level result, this map reports the most restrictive decision per policy type across all requested resources.
If the simulation evaluates policies within the same account and includes a resource ARN, then the parameter is present but the response is empty. If the simulation evaluates policies within the same account and specifies all resources (
*), then the parameter is not returned.When you make a cross-account request, Amazon Web Services evaluates the request in the trusting account and the trusted account. The request is allowed only if both evaluations return
true. For more information about how policies are evaluated, see Evaluating policies within a single account.If an Organizations SCP included in the evaluation denies access, the simulation ends. In this case, policy evaluation does not proceed any further and this parameter is not returned.
-
hasResourceSpecificResults
public final boolean hasResourceSpecificResults()For responses, this returns true if the service returned a value for the ResourceSpecificResults property. This DOES NOT check that the value is non-empty (for which, you should check theisEmpty()method on the property). This is useful because the SDK will never return a null collection or map, but you may need to differentiate between the service returning nothing (or null) and the service returning an empty collection or map. For requests, this returns true if a value for the property was specified in the request builder, and false if a value was not specified. -
resourceSpecificResults
The individual results of the simulation of the API operation specified in EvalActionName on each resource.
Attempts to modify the collection returned by this method will result in an UnsupportedOperationException.
This method will never return null. If you would like to know whether the service returned this field (so that you can differentiate between null and empty), you can use the
hasResourceSpecificResults()method.- Returns:
- The individual results of the simulation of the API operation specified in EvalActionName on each resource.
-
toBuilder
Description copied from interface:ToCopyableBuilderTake this object and create a builder that contains all of the current property values of this object.- Specified by:
toBuilderin interfaceToCopyableBuilder<EvaluationResult.Builder,EvaluationResult> - Returns:
- a builder for type T
-
builder
-
serializableBuilderClass
-
hashCode
-
equals
-
equalsBySdkFields
Description copied from interface:SdkPojoIndicates whether some other object is "equal to" this one by SDK fields. An SDK field is a modeled, non-inherited field in anSdkPojoclass, and is generated based on a service model.If an
SdkPojoclass does not have any inherited fields,equalsBySdkFieldsandequalsare essentially the same.- Specified by:
equalsBySdkFieldsin interfaceSdkPojo- Parameters:
obj- the object to be compared with- Returns:
- true if the other object equals to this object by sdk fields, false otherwise.
-
toString
-
getValueForField
-
sdkFields
-
sdkFieldNameToField
- Specified by:
sdkFieldNameToFieldin interfaceSdkPojo- Returns:
- The mapping between the field name and its corresponding field.
-