assumeDecoratedRoleWithSAML method
Allows a caller to assume an IAM role decorated as the SAML user specified in the SAML assertion included in the request. This decoration allows Lake Formation to enforce access policies against the SAML users and groups. This API operation requires SAML federation setup in the caller’s account as it can only be called with valid SAML assertions. Lake Formation does not scope down the permission of the assumed role. All permissions attached to the role via the SAML federation setup will be included in the role session.
This decorated role is expected to access data in Amazon S3 by getting
temporary access from Lake Formation which is authorized via the virtual
API GetDataAccess. Therefore, all SAML roles that can be
assumed via AssumeDecoratedRoleWithSAML must at a minimum
include lakeformation:GetDataAccess in their role policies. A
typical IAM policy attached to such a role would include the following
actions:
- glue:*Database*
- glue:*Table*
- glue:*Partition*
- glue:*UserDefinedFunction*
- lakeformation:GetDataAccess
May throw AccessDeniedException.
May throw EntityNotFoundException.
May throw InternalServiceException.
May throw InvalidInputException.
May throw OperationTimeoutException.
Parameter principalArn :
The Amazon Resource Name (ARN) of the SAML provider in IAM that describes
the IdP.
Parameter roleArn :
The role that represents an IAM principal whose scope down policy allows
it to call credential vending APIs such as
GetTemporaryTableCredentials. The caller must also have
iam:PassRole permission on this role.
Parameter sAMLAssertion :
A SAML assertion consisting of an assertion statement for the user who
needs temporary credentials. This must match the SAML assertion that was
issued to IAM. This must be Base64 encoded.
Parameter durationSeconds :
The time period, between 900 and 43,200 seconds, for the timeout of the
temporary credentials.
Implementation
Future<AssumeDecoratedRoleWithSAMLResponse> assumeDecoratedRoleWithSAML({
required String principalArn,
required String roleArn,
required String sAMLAssertion,
int? durationSeconds,
}) async {
_s.validateNumRange(
'durationSeconds',
durationSeconds,
900,
43200,
);
final $payload = <String, dynamic>{
'PrincipalArn': principalArn,
'RoleArn': roleArn,
'SAMLAssertion': sAMLAssertion,
if (durationSeconds != null) 'DurationSeconds': durationSeconds,
};
final response = await _protocol.send(
payload: $payload,
method: 'POST',
requestUri: '/AssumeDecoratedRoleWithSAML',
exceptionFnMap: _exceptionFns,
);
return AssumeDecoratedRoleWithSAMLResponse.fromJson(response);
}