From 5528f54c3daa84889cb7e8c5b189c2de7f768bb4 Mon Sep 17 00:00:00 2001 From: awstools Date: Thu, 14 Nov 2024 19:14:43 +0000 Subject: [PATCH] feat(client-sts): This release introduces the new API 'AssumeRoot', which returns short-term credentials that you can use to perform privileged tasks. --- clients/client-sts/README.md | 8 + clients/client-sts/src/STS.ts | 13 ++ clients/client-sts/src/STSClient.ts | 3 + .../src/commands/AssumeRoleCommand.ts | 26 +-- .../src/commands/AssumeRoleWithSAMLCommand.ts | 16 +- .../AssumeRoleWithWebIdentityCommand.ts | 45 ++--- .../src/commands/AssumeRootCommand.ts | 124 ++++++++++++ .../DecodeAuthorizationMessageCommand.ts | 4 +- .../src/commands/GetFederationTokenCommand.ts | 16 +- .../src/commands/GetSessionTokenCommand.ts | 12 +- clients/client-sts/src/commands/index.ts | 1 + clients/client-sts/src/models/models_0.ts | 187 +++++++++++++++--- clients/client-sts/src/protocols/Aws_query.ts | 78 ++++++++ codegen/sdk-codegen/aws-models/sts.json | 171 ++++++++++++++-- 14 files changed, 584 insertions(+), 120 deletions(-) create mode 100644 clients/client-sts/src/commands/AssumeRootCommand.ts diff --git a/clients/client-sts/README.md b/clients/client-sts/README.md index 4ee2eeeafa43..64b98d576d00 100644 --- a/clients/client-sts/README.md +++ b/clients/client-sts/README.md @@ -230,6 +230,14 @@ AssumeRoleWithWebIdentity [Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/sts/command/AssumeRoleWithWebIdentityCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sts/Interface/AssumeRoleWithWebIdentityCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sts/Interface/AssumeRoleWithWebIdentityCommandOutput/) + +
+ +AssumeRoot + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/sts/command/AssumeRootCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sts/Interface/AssumeRootCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sts/Interface/AssumeRootCommandOutput/) +
diff --git a/clients/client-sts/src/STS.ts b/clients/client-sts/src/STS.ts index b5b57c769b8b..47da3f56d780 100644 --- a/clients/client-sts/src/STS.ts +++ b/clients/client-sts/src/STS.ts @@ -13,6 +13,7 @@ import { AssumeRoleWithWebIdentityCommandInput, AssumeRoleWithWebIdentityCommandOutput, } from "./commands/AssumeRoleWithWebIdentityCommand"; +import { AssumeRootCommand, AssumeRootCommandInput, AssumeRootCommandOutput } from "./commands/AssumeRootCommand"; import { DecodeAuthorizationMessageCommand, DecodeAuthorizationMessageCommandInput, @@ -44,6 +45,7 @@ const commands = { AssumeRoleCommand, AssumeRoleWithSAMLCommand, AssumeRoleWithWebIdentityCommand, + AssumeRootCommand, DecodeAuthorizationMessageCommand, GetAccessKeyInfoCommand, GetCallerIdentityCommand, @@ -97,6 +99,17 @@ export interface STS { cb: (err: any, data?: AssumeRoleWithWebIdentityCommandOutput) => void ): void; + /** + * @see {@link AssumeRootCommand} + */ + assumeRoot(args: AssumeRootCommandInput, options?: __HttpHandlerOptions): Promise; + assumeRoot(args: AssumeRootCommandInput, cb: (err: any, data?: AssumeRootCommandOutput) => void): void; + assumeRoot( + args: AssumeRootCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: AssumeRootCommandOutput) => void + ): void; + /** * @see {@link DecodeAuthorizationMessageCommand} */ diff --git a/clients/client-sts/src/STSClient.ts b/clients/client-sts/src/STSClient.ts index 32d0249109e7..4fb5bfb439da 100644 --- a/clients/client-sts/src/STSClient.ts +++ b/clients/client-sts/src/STSClient.ts @@ -59,6 +59,7 @@ import { AssumeRoleWithWebIdentityCommandInput, AssumeRoleWithWebIdentityCommandOutput, } from "./commands/AssumeRoleWithWebIdentityCommand"; +import { AssumeRootCommandInput, AssumeRootCommandOutput } from "./commands/AssumeRootCommand"; import { DecodeAuthorizationMessageCommandInput, DecodeAuthorizationMessageCommandOutput, @@ -85,6 +86,7 @@ export type ServiceInputTypes = | AssumeRoleCommandInput | AssumeRoleWithSAMLCommandInput | AssumeRoleWithWebIdentityCommandInput + | AssumeRootCommandInput | DecodeAuthorizationMessageCommandInput | GetAccessKeyInfoCommandInput | GetCallerIdentityCommandInput @@ -98,6 +100,7 @@ export type ServiceOutputTypes = | AssumeRoleCommandOutput | AssumeRoleWithSAMLCommandOutput | AssumeRoleWithWebIdentityCommandOutput + | AssumeRootCommandOutput | DecodeAuthorizationMessageCommandOutput | GetAccessKeyInfoCommandOutput | GetCallerIdentityCommandOutput diff --git a/clients/client-sts/src/commands/AssumeRoleCommand.ts b/clients/client-sts/src/commands/AssumeRoleCommand.ts index 30a63c10f7e8..ad217b012365 100644 --- a/clients/client-sts/src/commands/AssumeRoleCommand.ts +++ b/clients/client-sts/src/commands/AssumeRoleCommand.ts @@ -33,8 +33,8 @@ export interface AssumeRoleCommandOutput extends AssumeRoleResponse, __MetadataB * and a security token. Typically, you use AssumeRole within your account or for * cross-account access. For a comparison of AssumeRole with other API operations * that produce temporary credentials, see Requesting Temporary Security - * Credentials and Comparing the - * Amazon Web Services STS API operations in the IAM User Guide.

+ * Credentials and Compare STS + * credentials in the IAM User Guide.

*

* Permissions *

@@ -42,11 +42,11 @@ export interface AssumeRoleCommandOutput extends AssumeRoleResponse, __MetadataB * make API calls to any Amazon Web Services service with the following exception: You cannot call the * Amazon Web Services STS GetFederationToken or GetSessionToken API * operations.

- *

(Optional) You can pass inline or managed session policies to - * this operation. You can pass a single JSON policy document to use as an inline session - * policy. You can also specify up to 10 managed policy Amazon Resource Names (ARNs) to use as - * managed session policies. The plaintext that you use for both inline and managed session - * policies can't exceed 2,048 characters. Passing policies to this operation returns new + *

(Optional) You can pass inline or managed session policies to this operation. You can + * pass a single JSON policy document to use as an inline session policy. You can also specify + * up to 10 managed policy Amazon Resource Names (ARNs) to use as managed session policies. + * The plaintext that you use for both inline and managed session policies can't exceed 2,048 + * characters. Passing policies to this operation returns new * temporary credentials. The resulting session's permissions are the intersection of the * role's identity-based policy and the session policies. You can use the role's temporary * credentials in subsequent Amazon Web Services API calls to access resources in the account that owns @@ -193,15 +193,15 @@ export interface AssumeRoleCommandOutput extends AssumeRoleResponse, __MetadataB * tags are to the upper size limit. For more information, see Passing Session Tags in STS in * the IAM User Guide.

*

You could receive this error even though you meet other defined session policy and - * session tag limits. For more information, see IAM and STS Entity - * Character Limits in the IAM User Guide.

+ * session tag limits. For more information, see IAM and STS Entity Character Limits in the IAM User + * Guide.

* * @throws {@link RegionDisabledException} (client fault) *

STS is not activated in the requested region for the account that is being asked to - * generate credentials. The account administrator must use the IAM console to activate STS - * in that region. For more information, see Activating and - * Deactivating Amazon Web Services STS in an Amazon Web Services Region in the IAM User - * Guide.

+ * generate credentials. The account administrator must use the IAM console to activate + * STS in that region. For more information, see Activating and + * Deactivating STS in an Amazon Web Services Region in the IAM User + * Guide.

* * @throws {@link STSServiceException} *

Base exception class for all service exceptions from STS service.

diff --git a/clients/client-sts/src/commands/AssumeRoleWithSAMLCommand.ts b/clients/client-sts/src/commands/AssumeRoleWithSAMLCommand.ts index 5087a025cef8..2530f7e6bc69 100644 --- a/clients/client-sts/src/commands/AssumeRoleWithSAMLCommand.ts +++ b/clients/client-sts/src/commands/AssumeRoleWithSAMLCommand.ts @@ -38,8 +38,8 @@ export interface AssumeRoleWithSAMLCommandOutput extends AssumeRoleWithSAMLRespo * enterprise identity store or directory to role-based Amazon Web Services access without user-specific * credentials or configuration. For a comparison of AssumeRoleWithSAML with the * other API operations that produce temporary credentials, see Requesting Temporary Security - * Credentials and Comparing the - * Amazon Web Services STS API operations in the IAM User Guide.

+ * Credentials and Compare STS + * credentials in the IAM User Guide.

*

The temporary security credentials returned by this operation consist of an access key * ID, a secret access key, and a security token. Applications can use these temporary * security credentials to sign calls to Amazon Web Services services.

@@ -236,15 +236,15 @@ export interface AssumeRoleWithSAMLCommandOutput extends AssumeRoleWithSAMLRespo * tags are to the upper size limit. For more information, see Passing Session Tags in STS in * the IAM User Guide.

*

You could receive this error even though you meet other defined session policy and - * session tag limits. For more information, see IAM and STS Entity - * Character Limits in the IAM User Guide.

+ * session tag limits. For more information, see IAM and STS Entity Character Limits in the IAM User + * Guide.

* * @throws {@link RegionDisabledException} (client fault) *

STS is not activated in the requested region for the account that is being asked to - * generate credentials. The account administrator must use the IAM console to activate STS - * in that region. For more information, see Activating and - * Deactivating Amazon Web Services STS in an Amazon Web Services Region in the IAM User - * Guide.

+ * generate credentials. The account administrator must use the IAM console to activate + * STS in that region. For more information, see Activating and + * Deactivating STS in an Amazon Web Services Region in the IAM User + * Guide.

* * @throws {@link STSServiceException} *

Base exception class for all service exceptions from STS service.

diff --git a/clients/client-sts/src/commands/AssumeRoleWithWebIdentityCommand.ts b/clients/client-sts/src/commands/AssumeRoleWithWebIdentityCommand.ts index 16e4b698e134..3c0ab07347f9 100644 --- a/clients/client-sts/src/commands/AssumeRoleWithWebIdentityCommand.ts +++ b/clients/client-sts/src/commands/AssumeRoleWithWebIdentityCommand.ts @@ -53,8 +53,8 @@ export interface AssumeRoleWithWebIdentityCommandOutput extends AssumeRoleWithWe * using a token from the web identity provider. For a comparison of * AssumeRoleWithWebIdentity with the other API operations that produce * temporary credentials, see Requesting Temporary Security - * Credentials and Comparing the - * Amazon Web Services STS API operations in the IAM User Guide.

+ * Credentials and Compare STS + * credentials in the IAM User Guide.

*

The temporary security credentials returned by this API consist of an access key ID, a * secret access key, and a security token. Applications can use these temporary security * credentials to sign calls to Amazon Web Services service API operations.

@@ -66,8 +66,7 @@ export interface AssumeRoleWithWebIdentityCommandOutput extends AssumeRoleWithWe * optional DurationSeconds parameter to specify the duration of your session. * You can provide a value from 900 seconds (15 minutes) up to the maximum session duration * setting for the role. This setting can have a value from 1 hour to 12 hours. To learn how - * to view the maximum value for your role, see View the - * Maximum Session Duration Setting for a Role in the + * to view the maximum value for your role, see Update the maximum session duration for a role in the * IAM User Guide. The maximum session duration limit applies when * you use the AssumeRole* API operations or the assume-role* CLI * commands. However the limit does not apply when you use those operations to create a @@ -136,7 +135,7 @@ export interface AssumeRoleWithWebIdentityCommandOutput extends AssumeRoleWithWe * or a pairwise identifier, as suggested * in the OIDC specification.

* - *

For more information about how to use web identity federation and the + *

For more information about how to use OIDC federation and the * AssumeRoleWithWebIdentity API, see the following resources:

* * @example * Use a bare-bones client and the command you need to make an API call. @@ -217,11 +202,11 @@ export interface AssumeRoleWithWebIdentityCommandOutput extends AssumeRoleWithWe * token from the identity provider and then retry the request.

* * @throws {@link IDPCommunicationErrorException} (client fault) - *

The request could not be fulfilled because the identity provider (IDP) that - * was asked to verify the incoming identity token could not be reached. This is often a - * transient error caused by network conditions. Retry the request a limited number of - * times so that you don't exceed the request rate. If the error persists, the - * identity provider might be down or not responding.

+ *

The request could not be fulfilled because the identity provider (IDP) that was asked + * to verify the incoming identity token could not be reached. This is often a transient + * error caused by network conditions. Retry the request a limited number of times so that + * you don't exceed the request rate. If the error persists, the identity provider might be + * down or not responding.

* * @throws {@link IDPRejectedClaimException} (client fault) *

The identity provider (IdP) reported that authentication failed. This might be because @@ -245,15 +230,15 @@ export interface AssumeRoleWithWebIdentityCommandOutput extends AssumeRoleWithWe * tags are to the upper size limit. For more information, see Passing Session Tags in STS in * the IAM User Guide.

*

You could receive this error even though you meet other defined session policy and - * session tag limits. For more information, see IAM and STS Entity - * Character Limits in the IAM User Guide.

+ * session tag limits. For more information, see IAM and STS Entity Character Limits in the IAM User + * Guide.

* * @throws {@link RegionDisabledException} (client fault) *

STS is not activated in the requested region for the account that is being asked to - * generate credentials. The account administrator must use the IAM console to activate STS - * in that region. For more information, see Activating and - * Deactivating Amazon Web Services STS in an Amazon Web Services Region in the IAM User - * Guide.

+ * generate credentials. The account administrator must use the IAM console to activate + * STS in that region. For more information, see Activating and + * Deactivating STS in an Amazon Web Services Region in the IAM User + * Guide.

* * @throws {@link STSServiceException} *

Base exception class for all service exceptions from STS service.

diff --git a/clients/client-sts/src/commands/AssumeRootCommand.ts b/clients/client-sts/src/commands/AssumeRootCommand.ts new file mode 100644 index 000000000000..586fc3e01faf --- /dev/null +++ b/clients/client-sts/src/commands/AssumeRootCommand.ts @@ -0,0 +1,124 @@ +// smithy-typescript generated code +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { getSerdePlugin } from "@smithy/middleware-serde"; +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; + +import { commonParams } from "../endpoint/EndpointParameters"; +import { AssumeRootRequest, AssumeRootResponse, AssumeRootResponseFilterSensitiveLog } from "../models/models_0"; +import { de_AssumeRootCommand, se_AssumeRootCommand } from "../protocols/Aws_query"; +import { ServiceInputTypes, ServiceOutputTypes, STSClientResolvedConfig } from "../STSClient"; + +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link AssumeRootCommand}. + */ +export interface AssumeRootCommandInput extends AssumeRootRequest {} +/** + * @public + * + * The output of {@link AssumeRootCommand}. + */ +export interface AssumeRootCommandOutput extends AssumeRootResponse, __MetadataBearer {} + +/** + *

Returns a set of short term credentials you can use to perform privileged tasks in a + * member account.

+ *

Before you can launch a privileged session, you must have enabled centralized root + * access in your organization. For steps to enable this feature, see Centralize root access for member accounts in the IAM User + * Guide.

+ * + *

The global endpoint is not supported for AssumeRoot. You must send this request to a + * Regional STS endpoint. For more information, see Endpoints.

+ *
+ *

You can track AssumeRoot in CloudTrail logs to determine what actions were performed in a + * session. For more information, see Track privileged tasks + * in CloudTrail in the IAM User Guide.

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { STSClient, AssumeRootCommand } from "@aws-sdk/client-sts"; // ES Modules import + * // const { STSClient, AssumeRootCommand } = require("@aws-sdk/client-sts"); // CommonJS import + * const client = new STSClient(config); + * const input = { // AssumeRootRequest + * TargetPrincipal: "STRING_VALUE", // required + * TaskPolicyArn: { // PolicyDescriptorType + * arn: "STRING_VALUE", + * }, + * DurationSeconds: Number("int"), + * }; + * const command = new AssumeRootCommand(input); + * const response = await client.send(command); + * // { // AssumeRootResponse + * // Credentials: { // Credentials + * // AccessKeyId: "STRING_VALUE", // required + * // SecretAccessKey: "STRING_VALUE", // required + * // SessionToken: "STRING_VALUE", // required + * // Expiration: new Date("TIMESTAMP"), // required + * // }, + * // SourceIdentity: "STRING_VALUE", + * // }; + * + * ``` + * + * @param AssumeRootCommandInput - {@link AssumeRootCommandInput} + * @returns {@link AssumeRootCommandOutput} + * @see {@link AssumeRootCommandInput} for command's `input` shape. + * @see {@link AssumeRootCommandOutput} for command's `response` shape. + * @see {@link STSClientResolvedConfig | config} for STSClient's `config` shape. + * + * @throws {@link ExpiredTokenException} (client fault) + *

The web identity token that was passed is expired or is not valid. Get a new identity + * token from the identity provider and then retry the request.

+ * + * @throws {@link RegionDisabledException} (client fault) + *

STS is not activated in the requested region for the account that is being asked to + * generate credentials. The account administrator must use the IAM console to activate + * STS in that region. For more information, see Activating and + * Deactivating STS in an Amazon Web Services Region in the IAM User + * Guide.

+ * + * @throws {@link STSServiceException} + *

Base exception class for all service exceptions from STS service.

+ * + * @public + */ +export class AssumeRootCommand extends $Command + .classBuilder< + AssumeRootCommandInput, + AssumeRootCommandOutput, + STSClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >() + .ep(commonParams) + .m(function (this: any, Command: any, cs: any, config: STSClientResolvedConfig, o: any) { + return [ + getSerdePlugin(config, this.serialize, this.deserialize), + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + ]; + }) + .s("AWSSecurityTokenServiceV20110615", "AssumeRoot", {}) + .n("STSClient", "AssumeRootCommand") + .f(void 0, AssumeRootResponseFilterSensitiveLog) + .ser(se_AssumeRootCommand) + .de(de_AssumeRootCommand) + .build() { + /** @internal type navigation helper, not in runtime. */ + protected declare static __types: { + api: { + input: AssumeRootRequest; + output: AssumeRootResponse; + }; + sdk: { + input: AssumeRootCommandInput; + output: AssumeRootCommandOutput; + }; + }; +} diff --git a/clients/client-sts/src/commands/DecodeAuthorizationMessageCommand.ts b/clients/client-sts/src/commands/DecodeAuthorizationMessageCommand.ts index 38af78f0c3f5..07f8ee823a18 100644 --- a/clients/client-sts/src/commands/DecodeAuthorizationMessageCommand.ts +++ b/clients/client-sts/src/commands/DecodeAuthorizationMessageCommand.ts @@ -89,8 +89,8 @@ export interface DecodeAuthorizationMessageCommandOutput extends DecodeAuthoriza * * @throws {@link InvalidAuthorizationMessageException} (client fault) *

The error returned if the message passed to DecodeAuthorizationMessage - * was invalid. This can happen if the token contains invalid characters, such as - * linebreaks.

+ * was invalid. This can happen if the token contains invalid characters, such as line + * breaks, or if the message has expired.

* * @throws {@link STSServiceException} *

Base exception class for all service exceptions from STS service.

diff --git a/clients/client-sts/src/commands/GetFederationTokenCommand.ts b/clients/client-sts/src/commands/GetFederationTokenCommand.ts index e8fb4cd348b4..1ba93aaa8fda 100644 --- a/clients/client-sts/src/commands/GetFederationTokenCommand.ts +++ b/clients/client-sts/src/commands/GetFederationTokenCommand.ts @@ -41,8 +41,8 @@ export interface GetFederationTokenCommandOutput extends GetFederationTokenRespo * contexts where those credentials can be safeguarded, usually in a server-based application. * For a comparison of GetFederationToken with the other API operations that * produce temporary credentials, see Requesting Temporary Security - * Credentials and Comparing the - * Amazon Web Services STS API operations in the IAM User Guide.

+ * Credentials and Compare STS + * credentials in the IAM User Guide.

*

Although it is possible to call GetFederationToken using the security * credentials of an Amazon Web Services account root user rather than an IAM user that you * create for the purpose of a proxy application, we do not recommend it. For more @@ -179,15 +179,15 @@ export interface GetFederationTokenCommandOutput extends GetFederationTokenRespo * tags are to the upper size limit. For more information, see Passing Session Tags in STS in * the IAM User Guide.

*

You could receive this error even though you meet other defined session policy and - * session tag limits. For more information, see IAM and STS Entity - * Character Limits in the IAM User Guide.

+ * session tag limits. For more information, see IAM and STS Entity Character Limits in the IAM User + * Guide.

* * @throws {@link RegionDisabledException} (client fault) *

STS is not activated in the requested region for the account that is being asked to - * generate credentials. The account administrator must use the IAM console to activate STS - * in that region. For more information, see Activating and - * Deactivating Amazon Web Services STS in an Amazon Web Services Region in the IAM User - * Guide.

+ * generate credentials. The account administrator must use the IAM console to activate + * STS in that region. For more information, see Activating and + * Deactivating STS in an Amazon Web Services Region in the IAM User + * Guide.

* * @throws {@link STSServiceException} *

Base exception class for all service exceptions from STS service.

diff --git a/clients/client-sts/src/commands/GetSessionTokenCommand.ts b/clients/client-sts/src/commands/GetSessionTokenCommand.ts index 147a16d7d48a..bac1323b74cc 100644 --- a/clients/client-sts/src/commands/GetSessionTokenCommand.ts +++ b/clients/client-sts/src/commands/GetSessionTokenCommand.ts @@ -43,8 +43,8 @@ export interface GetSessionTokenCommandOutput extends GetSessionTokenResponse, _ * calls to API operations that require MFA authentication. An incorrect MFA code causes the * API to return an access denied error. For a comparison of GetSessionToken with * the other API operations that produce temporary credentials, see Requesting - * Temporary Security Credentials and Comparing the - * Amazon Web Services STS API operations in the IAM User Guide.

+ * Temporary Security Credentials and Compare STS + * credentials in the IAM User Guide.

* *

No permissions are required for users to perform this operation. The purpose of the * sts:GetSessionToken operation is to authenticate the user using MFA. You @@ -123,10 +123,10 @@ export interface GetSessionTokenCommandOutput extends GetSessionTokenResponse, _ * * @throws {@link RegionDisabledException} (client fault) *

STS is not activated in the requested region for the account that is being asked to - * generate credentials. The account administrator must use the IAM console to activate STS - * in that region. For more information, see Activating and - * Deactivating Amazon Web Services STS in an Amazon Web Services Region in the IAM User - * Guide.

+ * generate credentials. The account administrator must use the IAM console to activate + * STS in that region. For more information, see Activating and + * Deactivating STS in an Amazon Web Services Region in the IAM User + * Guide.

* * @throws {@link STSServiceException} *

Base exception class for all service exceptions from STS service.

diff --git a/clients/client-sts/src/commands/index.ts b/clients/client-sts/src/commands/index.ts index 74f6b0ad6638..4a1ee7564344 100644 --- a/clients/client-sts/src/commands/index.ts +++ b/clients/client-sts/src/commands/index.ts @@ -2,6 +2,7 @@ export * from "./AssumeRoleCommand"; export * from "./AssumeRoleWithSAMLCommand"; export * from "./AssumeRoleWithWebIdentityCommand"; +export * from "./AssumeRootCommand"; export * from "./DecodeAuthorizationMessageCommand"; export * from "./GetAccessKeyInfoCommand"; export * from "./GetCallerIdentityCommand"; diff --git a/clients/client-sts/src/models/models_0.ts b/clients/client-sts/src/models/models_0.ts index 28a025045a81..27b46495c1ec 100644 --- a/clients/client-sts/src/models/models_0.ts +++ b/clients/client-sts/src/models/models_0.ts @@ -106,6 +106,11 @@ export interface AssumeRoleRequest { * session name is also used in the ARN of the assumed role principal. This means that * subsequent cross-account API requests that use the temporary security credentials will * expose the role session name to the external account in their CloudTrail logs.

+ *

For security purposes, administrators can view this field in CloudTrail logs to help identify who performed an action in Amazon Web Services. Your + * administrator might require that you specify your user name as the session name when you + * assume the role. For more information, see + * sts:RoleSessionName + * .

*

The regex used to validate this parameter is a string of characters * consisting of upper- and lower-case alphanumeric characters with no spaces. You can * also include underscores or any of the following characters: =,.@-

@@ -161,6 +166,8 @@ export interface AssumeRoleRequest { * PackedPolicySize response element indicates by percentage how close the * policies and tags for your request are to the upper size limit.

*
+ *

For more information about role session permissions, see Session + * policies.

* @public */ Policy?: string | undefined; @@ -178,9 +185,7 @@ export interface AssumeRoleRequest { * specify a parameter value of up to 43200 seconds (12 hours), depending on the maximum * session duration setting for your role. However, if you assume a role using role chaining * and provide a DurationSeconds parameter value greater than one hour, the - * operation fails. To learn how to view the maximum value for your role, see View the - * Maximum Session Duration Setting for a Role in the - * IAM User Guide.

+ * operation fails. To learn how to view the maximum value for your role, see Update the maximum session duration for a role.

*

By default, the value is set to 3600 seconds.

* *

The DurationSeconds parameter is separate from the duration of a console @@ -232,8 +237,8 @@ export interface AssumeRoleRequest { * as transitive, the corresponding key and value passes to subsequent sessions in a role * chain. For more information, see Chaining Roles * with Session Tags in the IAM User Guide.

- *

This parameter is optional. When you set session tags as transitive, the session policy - * and session tags packed binary limit is not affected.

+ *

This parameter is optional. The transitive status of a session tag does not impact its + * packed binary size.

*

If you choose not to specify a transitive tag key, then no tags are passed from this * session to any subsequent sessions.

* @public @@ -285,13 +290,15 @@ export interface AssumeRoleRequest { /** *

The source identity specified by the principal that is calling the - * AssumeRole operation.

+ * AssumeRole operation. The source identity value persists across chained role sessions.

*

You can require users to specify a source identity when they assume a role. You do this - * by using the sts:SourceIdentity condition key in a role trust policy. You can - * use source identity information in CloudTrail logs to determine who took actions with a role. - * You can use the aws:SourceIdentity condition key to further control access to - * Amazon Web Services resources based on the value of source identity. For more information about using - * source identity, see Monitor and control + * by using the + * sts:SourceIdentity + * condition key in a role trust policy. You + * can use source identity information in CloudTrail logs to determine who took actions with a + * role. You can use the aws:SourceIdentity condition key to further control + * access to Amazon Web Services resources based on the value of source identity. For more information about + * using source identity, see Monitor and control * actions taken with assumed roles in the * IAM User Guide.

*

The regex used to validate this parameter is a string of characters consisting of upper- @@ -451,8 +458,8 @@ export class MalformedPolicyDocumentException extends __BaseException { * tags are to the upper size limit. For more information, see Passing Session Tags in STS in * the IAM User Guide.

*

You could receive this error even though you meet other defined session policy and - * session tag limits. For more information, see IAM and STS Entity - * Character Limits in the IAM User Guide.

+ * session tag limits. For more information, see IAM and STS Entity Character Limits in the IAM User + * Guide.

* @public */ export class PackedPolicyTooLargeException extends __BaseException { @@ -473,10 +480,10 @@ export class PackedPolicyTooLargeException extends __BaseException { /** *

STS is not activated in the requested region for the account that is being asked to - * generate credentials. The account administrator must use the IAM console to activate STS - * in that region. For more information, see Activating and - * Deactivating Amazon Web Services STS in an Amazon Web Services Region in the IAM User - * Guide.

+ * generate credentials. The account administrator must use the IAM console to activate + * STS in that region. For more information, see Activating and + * Deactivating STS in an Amazon Web Services Region in the IAM User + * Guide.

* @public */ export class RegionDisabledException extends __BaseException { @@ -561,6 +568,8 @@ export interface AssumeRoleWithSAMLRequest { * character to the end of the valid character list (\u0020 through \u00FF). It can also * include the tab (\u0009), linefeed (\u000A), and carriage return (\u000D) * characters.

+ *

For more information about role session permissions, see Session + * policies.

* *

An Amazon Web Services conversion compresses the passed inline session policy, managed policy ARNs, * and session tags into a packed binary format that has a separate limit. Your request can @@ -688,14 +697,16 @@ export interface AssumeRoleWithSAMLResponse { NameQualifier?: string | undefined; /** - *

The value in the SourceIdentity attribute in the SAML assertion.

+ *

The value in the SourceIdentity attribute in the SAML assertion. The source + * identity value persists across chained role + * sessions.

*

You can require users to set a source identity value when they assume a role. You do * this by using the sts:SourceIdentity condition key in a role trust policy. * That way, actions that are taken with the role are associated with that user. After the * source identity is set, the value cannot be changed. It is present in the request for all - * actions that are taken by the role and persists across chained - * role sessions. You can configure your SAML identity provider to use an attribute - * associated with your users, like user name or email, as the source identity when calling + * actions that are taken by the role and persists across chained role + * sessions. You can configure your SAML identity provider to use an attribute associated with + * your users, like user name or email, as the source identity when calling * AssumeRoleWithSAML. You do this by adding an attribute to the SAML * assertion. For more information about using source identity, see Monitor and control * actions taken with assumed roles in the @@ -758,6 +769,16 @@ export class InvalidIdentityTokenException extends __BaseException { export interface AssumeRoleWithWebIdentityRequest { /** *

The Amazon Resource Name (ARN) of the role that the caller is assuming.

+ * + *

Additional considerations apply to Amazon Cognito identity pools that assume cross-account IAM roles. The trust policies of these roles must accept the + * cognito-identity.amazonaws.com service principal and must contain the + * cognito-identity.amazonaws.com:aud condition key to restrict role + * assumption to users from your intended identity pools. A policy that trusts Amazon Cognito + * identity pools without this condition creates a risk that a user from an unintended + * identity pool can assume the role. For more information, see Trust policies for + * IAM roles in Basic (Classic) authentication in the Amazon Cognito + * Developer Guide.

+ *
* @public */ RoleArn: string | undefined; @@ -768,6 +789,11 @@ export interface AssumeRoleWithWebIdentityRequest { * security credentials that your application will use are associated with that user. This * session name is included as part of the ARN and assumed role ID in the * AssumedRoleUser response element.

+ *

For security purposes, administrators can view this field in CloudTrail logs to help identify who performed an action in Amazon Web Services. Your + * administrator might require that you specify your user name as the session name when you + * assume the role. For more information, see + * sts:RoleSessionName + * .

*

The regex used to validate this parameter is a string of characters * consisting of upper- and lower-case alphanumeric characters with no spaces. You can * also include underscores or any of the following characters: =,.@-

@@ -779,7 +805,8 @@ export interface AssumeRoleWithWebIdentityRequest { *

The OAuth 2.0 access token or OpenID Connect ID token that is provided by the identity * provider. Your application must get this token by authenticating the user who is using your * application with a web identity provider before the application makes an - * AssumeRoleWithWebIdentity call. Only tokens with RSA algorithms (RS256) are + * AssumeRoleWithWebIdentity call. Timestamps in the token must be formatted + * as either an integer or a long integer. Only tokens with RSA algorithms (RS256) are * supported.

* @public */ @@ -837,6 +864,8 @@ export interface AssumeRoleWithWebIdentityRequest { * character to the end of the valid character list (\u0020 through \u00FF). It can also * include the tab (\u0009), linefeed (\u000A), and carriage return (\u000D) * characters.

+ *

For more information about role session permissions, see Session + * policies.

* *

An Amazon Web Services conversion compresses the passed inline session policy, managed policy ARNs, * and session tags into a packed binary format that has a separate limit. Your request can @@ -942,9 +971,9 @@ export interface AssumeRoleWithWebIdentityResponse { * this by using the sts:SourceIdentity condition key in a role trust policy. * That way, actions that are taken with the role are associated with that user. After the * source identity is set, the value cannot be changed. It is present in the request for all - * actions that are taken by the role and persists across chained - * role sessions. You can configure your identity provider to use an attribute - * associated with your users, like user name or email, as the source identity when calling + * actions that are taken by the role and persists across chained role + * sessions. You can configure your identity provider to use an attribute associated with your + * users, like user name or email, as the source identity when calling * AssumeRoleWithWebIdentity. You do this by adding a claim to the JSON web * token. To learn more about OIDC tokens and claims, see Using Tokens with User Pools in the Amazon Cognito Developer Guide. * For more information about using source identity, see Monitor and control @@ -959,11 +988,11 @@ export interface AssumeRoleWithWebIdentityResponse { } /** - *

The request could not be fulfilled because the identity provider (IDP) that - * was asked to verify the incoming identity token could not be reached. This is often a - * transient error caused by network conditions. Retry the request a limited number of - * times so that you don't exceed the request rate. If the error persists, the - * identity provider might be down or not responding.

+ *

The request could not be fulfilled because the identity provider (IDP) that was asked + * to verify the incoming identity token could not be reached. This is often a transient + * error caused by network conditions. Retry the request a limited number of times so that + * you don't exceed the request rate. If the error persists, the identity provider might be + * down or not responding.

* @public */ export class IDPCommunicationErrorException extends __BaseException { @@ -982,6 +1011,92 @@ export class IDPCommunicationErrorException extends __BaseException { } } +/** + * @public + */ +export interface AssumeRootRequest { + /** + *

The member account principal ARN or account ID.

+ * @public + */ + TargetPrincipal: string | undefined; + + /** + *

The identity based policy that scopes the session to the privileged tasks that can be + * performed. You can use one of following Amazon Web Services managed policies to scope + * root session actions. You can add additional customer managed policies to further limit the + * permissions for the root session.

+ *
+ * @public + */ + TaskPolicyArn: PolicyDescriptorType | undefined; + + /** + *

The duration, in seconds, of the privileged session. The value can range from 0 seconds + * up to the maximum session duration of 900 seconds (15 minutes). If you specify a value + * higher than this setting, the operation fails.

+ *

By default, the value is set to 900 seconds.

+ * @public + */ + DurationSeconds?: number | undefined; +} + +/** + * @public + */ +export interface AssumeRootResponse { + /** + *

The temporary security credentials, which include an access key ID, a secret access key, + * and a security token.

+ * + *

The size of the security token that STS API operations return is not fixed. We + * strongly recommend that you make no assumptions about the maximum size.

+ *
+ * @public + */ + Credentials?: Credentials | undefined; + + /** + *

The source identity specified by the principal that is calling the + * AssumeRoot operation.

+ *

You can use the aws:SourceIdentity condition key to control access based on + * the value of source identity. For more information about using source identity, see Monitor and control + * actions taken with assumed roles in the + * IAM User Guide.

+ *

The regex used to validate this parameter is a string of characters consisting of upper- + * and lower-case alphanumeric characters with no spaces. You can also include underscores or + * any of the following characters: =,.@-

+ * @public + */ + SourceIdentity?: string | undefined; +} + /** * @public */ @@ -1008,8 +1123,8 @@ export interface DecodeAuthorizationMessageResponse { /** *

The error returned if the message passed to DecodeAuthorizationMessage - * was invalid. This can happen if the token contains invalid characters, such as - * linebreaks.

+ * was invalid. This can happen if the token contains invalid characters, such as line + * breaks, or if the message has expired.

* @public */ export class InvalidAuthorizationMessageException extends __BaseException { @@ -1371,6 +1486,14 @@ export const AssumeRoleWithWebIdentityResponseFilterSensitiveLog = (obj: AssumeR ...(obj.Credentials && { Credentials: CredentialsFilterSensitiveLog(obj.Credentials) }), }); +/** + * @internal + */ +export const AssumeRootResponseFilterSensitiveLog = (obj: AssumeRootResponse): any => ({ + ...obj, + ...(obj.Credentials && { Credentials: CredentialsFilterSensitiveLog(obj.Credentials) }), +}); + /** * @internal */ diff --git a/clients/client-sts/src/protocols/Aws_query.ts b/clients/client-sts/src/protocols/Aws_query.ts index 635c174fac69..726ad2916334 100644 --- a/clients/client-sts/src/protocols/Aws_query.ts +++ b/clients/client-sts/src/protocols/Aws_query.ts @@ -24,6 +24,7 @@ import { AssumeRoleWithWebIdentityCommandInput, AssumeRoleWithWebIdentityCommandOutput, } from "../commands/AssumeRoleWithWebIdentityCommand"; +import { AssumeRootCommandInput, AssumeRootCommandOutput } from "../commands/AssumeRootCommand"; import { DecodeAuthorizationMessageCommandInput, DecodeAuthorizationMessageCommandOutput, @@ -40,6 +41,8 @@ import { AssumeRoleWithSAMLResponse, AssumeRoleWithWebIdentityRequest, AssumeRoleWithWebIdentityResponse, + AssumeRootRequest, + AssumeRootResponse, Credentials, DecodeAuthorizationMessageRequest, DecodeAuthorizationMessageResponse, @@ -117,6 +120,23 @@ export const se_AssumeRoleWithWebIdentityCommand = async ( return buildHttpRpcRequest(context, headers, "/", undefined, body); }; +/** + * serializeAws_queryAssumeRootCommand + */ +export const se_AssumeRootCommand = async ( + input: AssumeRootCommandInput, + context: __SerdeContext +): Promise<__HttpRequest> => { + const headers: __HeaderBag = SHARED_HEADERS; + let body: any; + body = buildFormUrlencodedString({ + ...se_AssumeRootRequest(input, context), + [_A]: _ARs, + [_V]: _, + }); + return buildHttpRpcRequest(context, headers, "/", undefined, body); +}; + /** * serializeAws_queryDecodeAuthorizationMessageCommand */ @@ -262,6 +282,26 @@ export const de_AssumeRoleWithWebIdentityCommand = async ( return response; }; +/** + * deserializeAws_queryAssumeRootCommand + */ +export const de_AssumeRootCommand = async ( + output: __HttpResponse, + context: __SerdeContext +): Promise => { + if (output.statusCode >= 300) { + return de_CommandError(output, context); + } + const data: any = await parseBody(output.body, context); + let contents: any = {}; + contents = de_AssumeRootResponse(data.AssumeRootResult, context); + const response: AssumeRootCommandOutput = { + $metadata: deserializeMetadata(output), + ...contents, + }; + return response; +}; + /** * deserializeAws_queryDecodeAuthorizationMessageCommand */ @@ -675,6 +715,27 @@ const se_AssumeRoleWithWebIdentityRequest = (input: AssumeRoleWithWebIdentityReq return entries; }; +/** + * serializeAws_queryAssumeRootRequest + */ +const se_AssumeRootRequest = (input: AssumeRootRequest, context: __SerdeContext): any => { + const entries: any = {}; + if (input[_TP] != null) { + entries[_TP] = input[_TP]; + } + if (input[_TPA] != null) { + const memberEntries = se_PolicyDescriptorType(input[_TPA], context); + Object.entries(memberEntries).forEach(([key, value]) => { + const loc = `TaskPolicyArn.${key}`; + entries[loc] = value; + }); + } + if (input[_DS] != null) { + entries[_DS] = input[_DS]; + } + return entries; +}; + /** * serializeAws_queryDecodeAuthorizationMessageRequest */ @@ -975,6 +1036,20 @@ const de_AssumeRoleWithWebIdentityResponse = ( return contents; }; +/** + * deserializeAws_queryAssumeRootResponse + */ +const de_AssumeRootResponse = (output: any, context: __SerdeContext): AssumeRootResponse => { + const contents: any = {}; + if (output[_C] != null) { + contents[_C] = de_Credentials(output[_C], context); + } + if (output[_SI] != null) { + contents[_SI] = __expectString(output[_SI]); + } + return contents; +}; + /** * deserializeAws_queryCredentials */ @@ -1222,6 +1297,7 @@ const _ARI = "AssumedRoleId"; const _ARU = "AssumedRoleUser"; const _ARWSAML = "AssumeRoleWithSAML"; const _ARWWI = "AssumeRoleWithWebIdentity"; +const _ARs = "AssumeRoot"; const _Ac = "Account"; const _Ar = "Arn"; const _Au = "Audience"; @@ -1263,6 +1339,8 @@ const _ST = "SubjectType"; const _STe = "SessionToken"; const _T = "Tags"; const _TC = "TokenCode"; +const _TP = "TargetPrincipal"; +const _TPA = "TaskPolicyArn"; const _TTK = "TransitiveTagKeys"; const _UI = "UserId"; const _V = "Version"; diff --git a/codegen/sdk-codegen/aws-models/sts.json b/codegen/sdk-codegen/aws-models/sts.json index 41583cd0ad78..1dba5548a464 100644 --- a/codegen/sdk-codegen/aws-models/sts.json +++ b/codegen/sdk-codegen/aws-models/sts.json @@ -42,6 +42,9 @@ { "target": "com.amazonaws.sts#AssumeRoleWithWebIdentity" }, + { + "target": "com.amazonaws.sts#AssumeRoot" + }, { "target": "com.amazonaws.sts#DecodeAuthorizationMessage" }, @@ -2269,7 +2272,7 @@ } ], "traits": { - "smithy.api#documentation": "

Returns a set of temporary security credentials that you can use to access Amazon Web Services\n resources. These temporary credentials consist of an access key ID, a secret access key,\n and a security token. Typically, you use AssumeRole within your account or for\n cross-account access. For a comparison of AssumeRole with other API operations\n that produce temporary credentials, see Requesting Temporary Security\n Credentials and Comparing the\n Amazon Web Services STS API operations in the IAM User Guide.

\n

\n Permissions\n

\n

The temporary security credentials created by AssumeRole can be used to\n make API calls to any Amazon Web Services service with the following exception: You cannot call the\n Amazon Web Services STS GetFederationToken or GetSessionToken API\n operations.

\n

(Optional) You can pass inline or managed session policies to\n this operation. You can pass a single JSON policy document to use as an inline session\n policy. You can also specify up to 10 managed policy Amazon Resource Names (ARNs) to use as\n managed session policies. The plaintext that you use for both inline and managed session\n policies can't exceed 2,048 characters. Passing policies to this operation returns new \n temporary credentials. The resulting session's permissions are the intersection of the \n role's identity-based policy and the session policies. You can use the role's temporary \n credentials in subsequent Amazon Web Services API calls to access resources in the account that owns \n the role. You cannot use session policies to grant more permissions than those allowed \n by the identity-based policy of the role that is being assumed. For more information, see\n Session\n Policies in the IAM User Guide.

\n

When you create a role, you create two policies: a role trust policy that specifies\n who can assume the role, and a permissions policy that specifies\n what can be done with the role. You specify the trusted principal\n that is allowed to assume the role in the role trust policy.

\n

To assume a role from a different account, your Amazon Web Services account must be trusted by the\n role. The trust relationship is defined in the role's trust policy when the role is\n created. That trust policy states which accounts are allowed to delegate that access to\n users in the account.

\n

A user who wants to access a role in a different account must also have permissions that\n are delegated from the account administrator. The administrator must attach a policy that\n allows the user to call AssumeRole for the ARN of the role in the other\n account.

\n

To allow a user to assume a role in the same account, you can do either of the\n following:

\n
    \n
  • \n

    Attach a policy to the user that allows the user to call AssumeRole\n (as long as the role's trust policy trusts the account).

    \n
  • \n
  • \n

    Add the user as a principal directly in the role's trust policy.

    \n
  • \n
\n

You can do either because the role’s trust policy acts as an IAM resource-based\n policy. When a resource-based policy grants access to a principal in the same account, no\n additional identity-based policy is required. For more information about trust policies and\n resource-based policies, see IAM Policies in the\n IAM User Guide.

\n

\n Tags\n

\n

(Optional) You can pass tag key-value pairs to your session. These tags are called\n session tags. For more information about session tags, see Passing Session Tags in STS in the\n IAM User Guide.

\n

An administrator must grant you the permissions necessary to pass session tags. The\n administrator can also create granular permissions to allow you to pass only specific\n session tags. For more information, see Tutorial: Using Tags\n for Attribute-Based Access Control in the\n IAM User Guide.

\n

You can set the session tags as transitive. Transitive tags persist during role\n chaining. For more information, see Chaining Roles\n with Session Tags in the IAM User Guide.

\n

\n Using MFA with AssumeRole\n

\n

(Optional) You can include multi-factor authentication (MFA) information when you call\n AssumeRole. This is useful for cross-account scenarios to ensure that the\n user that assumes the role has been authenticated with an Amazon Web Services MFA device. In that\n scenario, the trust policy of the role being assumed includes a condition that tests for\n MFA authentication. If the caller does not include valid MFA information, the request to\n assume the role is denied. The condition in a trust policy that tests for MFA\n authentication might look like the following example.

\n

\n \"Condition\": {\"Bool\": {\"aws:MultiFactorAuthPresent\": true}}\n

\n

For more information, see Configuring MFA-Protected API Access\n in the IAM User Guide guide.

\n

To use MFA with AssumeRole, you pass values for the\n SerialNumber and TokenCode parameters. The\n SerialNumber value identifies the user's hardware or virtual MFA device.\n The TokenCode is the time-based one-time password (TOTP) that the MFA device\n produces.

", + "smithy.api#documentation": "

Returns a set of temporary security credentials that you can use to access Amazon Web Services\n resources. These temporary credentials consist of an access key ID, a secret access key,\n and a security token. Typically, you use AssumeRole within your account or for\n cross-account access. For a comparison of AssumeRole with other API operations\n that produce temporary credentials, see Requesting Temporary Security\n Credentials and Compare STS\n credentials in the IAM User Guide.

\n

\n Permissions\n

\n

The temporary security credentials created by AssumeRole can be used to\n make API calls to any Amazon Web Services service with the following exception: You cannot call the\n Amazon Web Services STS GetFederationToken or GetSessionToken API\n operations.

\n

(Optional) You can pass inline or managed session policies to this operation. You can\n pass a single JSON policy document to use as an inline session policy. You can also specify\n up to 10 managed policy Amazon Resource Names (ARNs) to use as managed session policies.\n The plaintext that you use for both inline and managed session policies can't exceed 2,048\n characters. Passing policies to this operation returns new \n temporary credentials. The resulting session's permissions are the intersection of the \n role's identity-based policy and the session policies. You can use the role's temporary \n credentials in subsequent Amazon Web Services API calls to access resources in the account that owns \n the role. You cannot use session policies to grant more permissions than those allowed \n by the identity-based policy of the role that is being assumed. For more information, see\n Session\n Policies in the IAM User Guide.

\n

When you create a role, you create two policies: a role trust policy that specifies\n who can assume the role, and a permissions policy that specifies\n what can be done with the role. You specify the trusted principal\n that is allowed to assume the role in the role trust policy.

\n

To assume a role from a different account, your Amazon Web Services account must be trusted by the\n role. The trust relationship is defined in the role's trust policy when the role is\n created. That trust policy states which accounts are allowed to delegate that access to\n users in the account.

\n

A user who wants to access a role in a different account must also have permissions that\n are delegated from the account administrator. The administrator must attach a policy that\n allows the user to call AssumeRole for the ARN of the role in the other\n account.

\n

To allow a user to assume a role in the same account, you can do either of the\n following:

\n
    \n
  • \n

    Attach a policy to the user that allows the user to call AssumeRole\n (as long as the role's trust policy trusts the account).

    \n
  • \n
  • \n

    Add the user as a principal directly in the role's trust policy.

    \n
  • \n
\n

You can do either because the role’s trust policy acts as an IAM resource-based\n policy. When a resource-based policy grants access to a principal in the same account, no\n additional identity-based policy is required. For more information about trust policies and\n resource-based policies, see IAM Policies in the\n IAM User Guide.

\n

\n Tags\n

\n

(Optional) You can pass tag key-value pairs to your session. These tags are called\n session tags. For more information about session tags, see Passing Session Tags in STS in the\n IAM User Guide.

\n

An administrator must grant you the permissions necessary to pass session tags. The\n administrator can also create granular permissions to allow you to pass only specific\n session tags. For more information, see Tutorial: Using Tags\n for Attribute-Based Access Control in the\n IAM User Guide.

\n

You can set the session tags as transitive. Transitive tags persist during role\n chaining. For more information, see Chaining Roles\n with Session Tags in the IAM User Guide.

\n

\n Using MFA with AssumeRole\n

\n

(Optional) You can include multi-factor authentication (MFA) information when you call\n AssumeRole. This is useful for cross-account scenarios to ensure that the\n user that assumes the role has been authenticated with an Amazon Web Services MFA device. In that\n scenario, the trust policy of the role being assumed includes a condition that tests for\n MFA authentication. If the caller does not include valid MFA information, the request to\n assume the role is denied. The condition in a trust policy that tests for MFA\n authentication might look like the following example.

\n

\n \"Condition\": {\"Bool\": {\"aws:MultiFactorAuthPresent\": true}}\n

\n

For more information, see Configuring MFA-Protected API Access\n in the IAM User Guide guide.

\n

To use MFA with AssumeRole, you pass values for the\n SerialNumber and TokenCode parameters. The\n SerialNumber value identifies the user's hardware or virtual MFA device.\n The TokenCode is the time-based one-time password (TOTP) that the MFA device\n produces.

", "smithy.api#examples": [ { "title": "To assume a role", @@ -2325,7 +2328,7 @@ "RoleSessionName": { "target": "com.amazonaws.sts#roleSessionNameType", "traits": { - "smithy.api#documentation": "

An identifier for the assumed role session.

\n

Use the role session name to uniquely identify a session when the same role is assumed\n by different principals or for different reasons. In cross-account scenarios, the role\n session name is visible to, and can be logged by the account that owns the role. The role\n session name is also used in the ARN of the assumed role principal. This means that\n subsequent cross-account API requests that use the temporary security credentials will\n expose the role session name to the external account in their CloudTrail logs.

\n

The regex used to validate this parameter is a string of characters \n consisting of upper- and lower-case alphanumeric characters with no spaces. You can \n also include underscores or any of the following characters: =,.@-

", + "smithy.api#documentation": "

An identifier for the assumed role session.

\n

Use the role session name to uniquely identify a session when the same role is assumed\n by different principals or for different reasons. In cross-account scenarios, the role\n session name is visible to, and can be logged by the account that owns the role. The role\n session name is also used in the ARN of the assumed role principal. This means that\n subsequent cross-account API requests that use the temporary security credentials will\n expose the role session name to the external account in their CloudTrail logs.

\n

For security purposes, administrators can view this field in CloudTrail logs to help identify who performed an action in Amazon Web Services. Your\n administrator might require that you specify your user name as the session name when you\n assume the role. For more information, see \n sts:RoleSessionName\n .

\n

The regex used to validate this parameter is a string of characters \n consisting of upper- and lower-case alphanumeric characters with no spaces. You can \n also include underscores or any of the following characters: =,.@-

", "smithy.api#required": {} } }, @@ -2338,13 +2341,13 @@ "Policy": { "target": "com.amazonaws.sts#unrestrictedSessionPolicyDocumentType", "traits": { - "smithy.api#documentation": "

An IAM policy in JSON format that you want to use as an inline session policy.

\n

This parameter is optional. Passing policies to this operation returns new \n temporary credentials. The resulting session's permissions are the intersection of the \n role's identity-based policy and the session policies. You can use the role's temporary \n credentials in subsequent Amazon Web Services API calls to access resources in the account that owns \n the role. You cannot use session policies to grant more permissions than those allowed \n by the identity-based policy of the role that is being assumed. For more information, see\n Session\n Policies in the IAM User Guide.

\n

The plaintext that you use for both inline and managed session policies can't exceed\n 2,048 characters. The JSON policy characters can be any ASCII character from the space\n character to the end of the valid character list (\\u0020 through \\u00FF). It can also\n include the tab (\\u0009), linefeed (\\u000A), and carriage return (\\u000D)\n characters.

\n \n

An Amazon Web Services conversion compresses the passed inline session policy, managed policy ARNs,\n and session tags into a packed binary format that has a separate limit. Your request can\n fail for this limit even if your plaintext meets the other requirements. The\n PackedPolicySize response element indicates by percentage how close the\n policies and tags for your request are to the upper size limit.

\n
" + "smithy.api#documentation": "

An IAM policy in JSON format that you want to use as an inline session policy.

\n

This parameter is optional. Passing policies to this operation returns new \n temporary credentials. The resulting session's permissions are the intersection of the \n role's identity-based policy and the session policies. You can use the role's temporary \n credentials in subsequent Amazon Web Services API calls to access resources in the account that owns \n the role. You cannot use session policies to grant more permissions than those allowed \n by the identity-based policy of the role that is being assumed. For more information, see\n Session\n Policies in the IAM User Guide.

\n

The plaintext that you use for both inline and managed session policies can't exceed\n 2,048 characters. The JSON policy characters can be any ASCII character from the space\n character to the end of the valid character list (\\u0020 through \\u00FF). It can also\n include the tab (\\u0009), linefeed (\\u000A), and carriage return (\\u000D)\n characters.

\n \n

An Amazon Web Services conversion compresses the passed inline session policy, managed policy ARNs,\n and session tags into a packed binary format that has a separate limit. Your request can\n fail for this limit even if your plaintext meets the other requirements. The\n PackedPolicySize response element indicates by percentage how close the\n policies and tags for your request are to the upper size limit.

\n
\n

For more information about role session permissions, see Session\n policies.

" } }, "DurationSeconds": { "target": "com.amazonaws.sts#roleDurationSecondsType", "traits": { - "smithy.api#documentation": "

The duration, in seconds, of the role session. The value specified can range from 900\n seconds (15 minutes) up to the maximum session duration set for the role. The maximum\n session duration setting can have a value from 1 hour to 12 hours. If you specify a value\n higher than this setting or the administrator setting (whichever is lower), the operation\n fails. For example, if you specify a session duration of 12 hours, but your administrator\n set the maximum session duration to 6 hours, your operation fails.

\n

Role chaining limits your Amazon Web Services CLI or Amazon Web Services API role session to a maximum of one hour.\n When you use the AssumeRole API operation to assume a role, you can specify\n the duration of your role session with the DurationSeconds parameter. You can\n specify a parameter value of up to 43200 seconds (12 hours), depending on the maximum\n session duration setting for your role. However, if you assume a role using role chaining\n and provide a DurationSeconds parameter value greater than one hour, the\n operation fails. To learn how to view the maximum value for your role, see View the\n Maximum Session Duration Setting for a Role in the\n IAM User Guide.

\n

By default, the value is set to 3600 seconds.

\n \n

The DurationSeconds parameter is separate from the duration of a console\n session that you might request using the returned credentials. The request to the\n federation endpoint for a console sign-in token takes a SessionDuration\n parameter that specifies the maximum length of the console session. For more\n information, see Creating a URL\n that Enables Federated Users to Access the Amazon Web Services Management Console in the\n IAM User Guide.

\n
" + "smithy.api#documentation": "

The duration, in seconds, of the role session. The value specified can range from 900\n seconds (15 minutes) up to the maximum session duration set for the role. The maximum\n session duration setting can have a value from 1 hour to 12 hours. If you specify a value\n higher than this setting or the administrator setting (whichever is lower), the operation\n fails. For example, if you specify a session duration of 12 hours, but your administrator\n set the maximum session duration to 6 hours, your operation fails.

\n

Role chaining limits your Amazon Web Services CLI or Amazon Web Services API role session to a maximum of one hour.\n When you use the AssumeRole API operation to assume a role, you can specify\n the duration of your role session with the DurationSeconds parameter. You can\n specify a parameter value of up to 43200 seconds (12 hours), depending on the maximum\n session duration setting for your role. However, if you assume a role using role chaining\n and provide a DurationSeconds parameter value greater than one hour, the\n operation fails. To learn how to view the maximum value for your role, see Update the maximum session duration for a role.

\n

By default, the value is set to 3600 seconds.

\n \n

The DurationSeconds parameter is separate from the duration of a console\n session that you might request using the returned credentials. The request to the\n federation endpoint for a console sign-in token takes a SessionDuration\n parameter that specifies the maximum length of the console session. For more\n information, see Creating a URL\n that Enables Federated Users to Access the Amazon Web Services Management Console in the\n IAM User Guide.

\n
" } }, "Tags": { @@ -2356,7 +2359,7 @@ "TransitiveTagKeys": { "target": "com.amazonaws.sts#tagKeyListType", "traits": { - "smithy.api#documentation": "

A list of keys for session tags that you want to set as transitive. If you set a tag key\n as transitive, the corresponding key and value passes to subsequent sessions in a role\n chain. For more information, see Chaining Roles\n with Session Tags in the IAM User Guide.

\n

This parameter is optional. When you set session tags as transitive, the session policy\n and session tags packed binary limit is not affected.

\n

If you choose not to specify a transitive tag key, then no tags are passed from this\n session to any subsequent sessions.

" + "smithy.api#documentation": "

A list of keys for session tags that you want to set as transitive. If you set a tag key\n as transitive, the corresponding key and value passes to subsequent sessions in a role\n chain. For more information, see Chaining Roles\n with Session Tags in the IAM User Guide.

\n

This parameter is optional. The transitive status of a session tag does not impact its\n packed binary size.

\n

If you choose not to specify a transitive tag key, then no tags are passed from this\n session to any subsequent sessions.

" } }, "ExternalId": { @@ -2380,7 +2383,7 @@ "SourceIdentity": { "target": "com.amazonaws.sts#sourceIdentityType", "traits": { - "smithy.api#documentation": "

The source identity specified by the principal that is calling the\n AssumeRole operation.

\n

You can require users to specify a source identity when they assume a role. You do this\n by using the sts:SourceIdentity condition key in a role trust policy. You can\n use source identity information in CloudTrail logs to determine who took actions with a role.\n You can use the aws:SourceIdentity condition key to further control access to\n Amazon Web Services resources based on the value of source identity. For more information about using\n source identity, see Monitor and control\n actions taken with assumed roles in the\n IAM User Guide.

\n

The regex used to validate this parameter is a string of characters consisting of upper-\n and lower-case alphanumeric characters with no spaces. You can also include underscores or\n any of the following characters: =,.@-. You cannot use a value that begins with the text\n aws:. This prefix is reserved for Amazon Web Services internal use.

" + "smithy.api#documentation": "

The source identity specified by the principal that is calling the\n AssumeRole operation. The source identity value persists across chained role sessions.

\n

You can require users to specify a source identity when they assume a role. You do this\n by using the \n sts:SourceIdentity\n condition key in a role trust policy. You\n can use source identity information in CloudTrail logs to determine who took actions with a\n role. You can use the aws:SourceIdentity condition key to further control\n access to Amazon Web Services resources based on the value of source identity. For more information about\n using source identity, see Monitor and control\n actions taken with assumed roles in the\n IAM User Guide.

\n

The regex used to validate this parameter is a string of characters consisting of upper-\n and lower-case alphanumeric characters with no spaces. You can also include underscores or\n any of the following characters: =,.@-. You cannot use a value that begins with the text\n aws:. This prefix is reserved for Amazon Web Services internal use.

" } }, "ProvidedContexts": { @@ -2456,7 +2459,7 @@ } ], "traits": { - "smithy.api#documentation": "

Returns a set of temporary security credentials for users who have been authenticated\n via a SAML authentication response. This operation provides a mechanism for tying an\n enterprise identity store or directory to role-based Amazon Web Services access without user-specific\n credentials or configuration. For a comparison of AssumeRoleWithSAML with the\n other API operations that produce temporary credentials, see Requesting Temporary Security\n Credentials and Comparing the\n Amazon Web Services STS API operations in the IAM User Guide.

\n

The temporary security credentials returned by this operation consist of an access key\n ID, a secret access key, and a security token. Applications can use these temporary\n security credentials to sign calls to Amazon Web Services services.

\n

\n Session Duration\n

\n

By default, the temporary security credentials created by\n AssumeRoleWithSAML last for one hour. However, you can use the optional\n DurationSeconds parameter to specify the duration of your session. Your\n role session lasts for the duration that you specify, or until the time specified in the\n SAML authentication response's SessionNotOnOrAfter value, whichever is\n shorter. You can provide a DurationSeconds value from 900 seconds (15 minutes)\n up to the maximum session duration setting for the role. This setting can have a value from\n 1 hour to 12 hours. To learn how to view the maximum value for your role, see View the\n Maximum Session Duration Setting for a Role in the\n IAM User Guide. The maximum session duration limit applies when\n you use the AssumeRole* API operations or the assume-role* CLI\n commands. However the limit does not apply when you use those operations to create a\n console URL. For more information, see Using IAM Roles in the\n IAM User Guide.

\n \n

\n Role chaining limits your CLI or Amazon Web Services API role\n session to a maximum of one hour. When you use the AssumeRole API operation\n to assume a role, you can specify the duration of your role session with the\n DurationSeconds parameter. You can specify a parameter value of up to\n 43200 seconds (12 hours), depending on the maximum session duration setting for your\n role. However, if you assume a role using role chaining and provide a\n DurationSeconds parameter value greater than one hour, the operation\n fails.

\n
\n

\n Permissions\n

\n

The temporary security credentials created by AssumeRoleWithSAML can be\n used to make API calls to any Amazon Web Services service with the following exception: you cannot call\n the STS GetFederationToken or GetSessionToken API\n operations.

\n

(Optional) You can pass inline or managed session policies to\n this operation. You can pass a single JSON policy document to use as an inline session\n policy. You can also specify up to 10 managed policy Amazon Resource Names (ARNs) to use as\n managed session policies. The plaintext that you use for both inline and managed session\n policies can't exceed 2,048 characters. Passing policies to this operation returns new \n temporary credentials. The resulting session's permissions are the intersection of the \n role's identity-based policy and the session policies. You can use the role's temporary \n credentials in subsequent Amazon Web Services API calls to access resources in the account that owns \n the role. You cannot use session policies to grant more permissions than those allowed \n by the identity-based policy of the role that is being assumed. For more information, see\n Session\n Policies in the IAM User Guide.

\n

Calling AssumeRoleWithSAML does not require the use of Amazon Web Services security\n credentials. The identity of the caller is validated by using keys in the metadata document\n that is uploaded for the SAML provider entity for your identity provider.

\n \n

Calling AssumeRoleWithSAML can result in an entry in your CloudTrail logs.\n The entry includes the value in the NameID element of the SAML assertion.\n We recommend that you use a NameIDType that is not associated with any\n personally identifiable information (PII). For example, you could instead use the\n persistent identifier\n (urn:oasis:names:tc:SAML:2.0:nameid-format:persistent).

\n
\n

\n Tags\n

\n

(Optional) You can configure your IdP to pass attributes into your SAML assertion as\n session tags. Each session tag consists of a key name and an associated value. For more\n information about session tags, see Passing Session Tags in STS in the\n IAM User Guide.

\n

You can pass up to 50 session tags. The plaintext session tag keys can’t exceed 128\n characters and the values can’t exceed 256 characters. For these and additional limits, see\n IAM\n and STS Character Limits in the IAM User Guide.

\n \n

An Amazon Web Services conversion compresses the passed inline session policy, managed policy ARNs,\n and session tags into a packed binary format that has a separate limit. Your request can\n fail for this limit even if your plaintext meets the other requirements. The\n PackedPolicySize response element indicates by percentage how close the\n policies and tags for your request are to the upper size limit.

\n
\n

You can pass a session tag with the same key as a tag that is attached to the role. When\n you do, session tags override the role's tags with the same key.

\n

An administrator must grant you the permissions necessary to pass session tags. The\n administrator can also create granular permissions to allow you to pass only specific\n session tags. For more information, see Tutorial: Using Tags\n for Attribute-Based Access Control in the\n IAM User Guide.

\n

You can set the session tags as transitive. Transitive tags persist during role\n chaining. For more information, see Chaining Roles\n with Session Tags in the IAM User Guide.

\n

\n SAML Configuration\n

\n

Before your application can call AssumeRoleWithSAML, you must configure\n your SAML identity provider (IdP) to issue the claims required by Amazon Web Services. Additionally, you\n must use Identity and Access Management (IAM) to create a SAML provider entity in your Amazon Web Services account that\n represents your identity provider. You must also create an IAM role that specifies this\n SAML provider in its trust policy.

\n

For more information, see the following resources:

\n ", + "smithy.api#documentation": "

Returns a set of temporary security credentials for users who have been authenticated\n via a SAML authentication response. This operation provides a mechanism for tying an\n enterprise identity store or directory to role-based Amazon Web Services access without user-specific\n credentials or configuration. For a comparison of AssumeRoleWithSAML with the\n other API operations that produce temporary credentials, see Requesting Temporary Security\n Credentials and Compare STS\n credentials in the IAM User Guide.

\n

The temporary security credentials returned by this operation consist of an access key\n ID, a secret access key, and a security token. Applications can use these temporary\n security credentials to sign calls to Amazon Web Services services.

\n

\n Session Duration\n

\n

By default, the temporary security credentials created by\n AssumeRoleWithSAML last for one hour. However, you can use the optional\n DurationSeconds parameter to specify the duration of your session. Your\n role session lasts for the duration that you specify, or until the time specified in the\n SAML authentication response's SessionNotOnOrAfter value, whichever is\n shorter. You can provide a DurationSeconds value from 900 seconds (15 minutes)\n up to the maximum session duration setting for the role. This setting can have a value from\n 1 hour to 12 hours. To learn how to view the maximum value for your role, see View the\n Maximum Session Duration Setting for a Role in the\n IAM User Guide. The maximum session duration limit applies when\n you use the AssumeRole* API operations or the assume-role* CLI\n commands. However the limit does not apply when you use those operations to create a\n console URL. For more information, see Using IAM Roles in the\n IAM User Guide.

\n \n

\n Role chaining limits your CLI or Amazon Web Services API role\n session to a maximum of one hour. When you use the AssumeRole API operation\n to assume a role, you can specify the duration of your role session with the\n DurationSeconds parameter. You can specify a parameter value of up to\n 43200 seconds (12 hours), depending on the maximum session duration setting for your\n role. However, if you assume a role using role chaining and provide a\n DurationSeconds parameter value greater than one hour, the operation\n fails.

\n
\n

\n Permissions\n

\n

The temporary security credentials created by AssumeRoleWithSAML can be\n used to make API calls to any Amazon Web Services service with the following exception: you cannot call\n the STS GetFederationToken or GetSessionToken API\n operations.

\n

(Optional) You can pass inline or managed session policies to\n this operation. You can pass a single JSON policy document to use as an inline session\n policy. You can also specify up to 10 managed policy Amazon Resource Names (ARNs) to use as\n managed session policies. The plaintext that you use for both inline and managed session\n policies can't exceed 2,048 characters. Passing policies to this operation returns new \n temporary credentials. The resulting session's permissions are the intersection of the \n role's identity-based policy and the session policies. You can use the role's temporary \n credentials in subsequent Amazon Web Services API calls to access resources in the account that owns \n the role. You cannot use session policies to grant more permissions than those allowed \n by the identity-based policy of the role that is being assumed. For more information, see\n Session\n Policies in the IAM User Guide.

\n

Calling AssumeRoleWithSAML does not require the use of Amazon Web Services security\n credentials. The identity of the caller is validated by using keys in the metadata document\n that is uploaded for the SAML provider entity for your identity provider.

\n \n

Calling AssumeRoleWithSAML can result in an entry in your CloudTrail logs.\n The entry includes the value in the NameID element of the SAML assertion.\n We recommend that you use a NameIDType that is not associated with any\n personally identifiable information (PII). For example, you could instead use the\n persistent identifier\n (urn:oasis:names:tc:SAML:2.0:nameid-format:persistent).

\n
\n

\n Tags\n

\n

(Optional) You can configure your IdP to pass attributes into your SAML assertion as\n session tags. Each session tag consists of a key name and an associated value. For more\n information about session tags, see Passing Session Tags in STS in the\n IAM User Guide.

\n

You can pass up to 50 session tags. The plaintext session tag keys can’t exceed 128\n characters and the values can’t exceed 256 characters. For these and additional limits, see\n IAM\n and STS Character Limits in the IAM User Guide.

\n \n

An Amazon Web Services conversion compresses the passed inline session policy, managed policy ARNs,\n and session tags into a packed binary format that has a separate limit. Your request can\n fail for this limit even if your plaintext meets the other requirements. The\n PackedPolicySize response element indicates by percentage how close the\n policies and tags for your request are to the upper size limit.

\n
\n

You can pass a session tag with the same key as a tag that is attached to the role. When\n you do, session tags override the role's tags with the same key.

\n

An administrator must grant you the permissions necessary to pass session tags. The\n administrator can also create granular permissions to allow you to pass only specific\n session tags. For more information, see Tutorial: Using Tags\n for Attribute-Based Access Control in the\n IAM User Guide.

\n

You can set the session tags as transitive. Transitive tags persist during role\n chaining. For more information, see Chaining Roles\n with Session Tags in the IAM User Guide.

\n

\n SAML Configuration\n

\n

Before your application can call AssumeRoleWithSAML, you must configure\n your SAML identity provider (IdP) to issue the claims required by Amazon Web Services. Additionally, you\n must use Identity and Access Management (IAM) to create a SAML provider entity in your Amazon Web Services account that\n represents your identity provider. You must also create an IAM role that specifies this\n SAML provider in its trust policy.

\n

For more information, see the following resources:

\n ", "smithy.api#examples": [ { "title": "To assume a role using a SAML assertion", @@ -2522,7 +2525,7 @@ "Policy": { "target": "com.amazonaws.sts#sessionPolicyDocumentType", "traits": { - "smithy.api#documentation": "

An IAM policy in JSON format that you want to use as an inline session policy.

\n

This parameter is optional. Passing policies to this operation returns new \n temporary credentials. The resulting session's permissions are the intersection of the \n role's identity-based policy and the session policies. You can use the role's temporary \n credentials in subsequent Amazon Web Services API calls to access resources in the account that owns \n the role. You cannot use session policies to grant more permissions than those allowed \n by the identity-based policy of the role that is being assumed. For more information, see\n Session\n Policies in the IAM User Guide.

\n

The plaintext that you use for both inline and managed session policies can't exceed\n 2,048 characters. The JSON policy characters can be any ASCII character from the space\n character to the end of the valid character list (\\u0020 through \\u00FF). It can also\n include the tab (\\u0009), linefeed (\\u000A), and carriage return (\\u000D)\n characters.

\n \n

An Amazon Web Services conversion compresses the passed inline session policy, managed policy ARNs,\n and session tags into a packed binary format that has a separate limit. Your request can\n fail for this limit even if your plaintext meets the other requirements. The\n PackedPolicySize response element indicates by percentage how close the\n policies and tags for your request are to the upper size limit.

\n
" + "smithy.api#documentation": "

An IAM policy in JSON format that you want to use as an inline session policy.

\n

This parameter is optional. Passing policies to this operation returns new \n temporary credentials. The resulting session's permissions are the intersection of the \n role's identity-based policy and the session policies. You can use the role's temporary \n credentials in subsequent Amazon Web Services API calls to access resources in the account that owns \n the role. You cannot use session policies to grant more permissions than those allowed \n by the identity-based policy of the role that is being assumed. For more information, see\n Session\n Policies in the IAM User Guide.

\n

The plaintext that you use for both inline and managed session policies can't exceed\n 2,048 characters. The JSON policy characters can be any ASCII character from the space\n character to the end of the valid character list (\\u0020 through \\u00FF). It can also\n include the tab (\\u0009), linefeed (\\u000A), and carriage return (\\u000D)\n characters.

\n

For more information about role session permissions, see Session\n policies.

\n \n

An Amazon Web Services conversion compresses the passed inline session policy, managed policy ARNs,\n and session tags into a packed binary format that has a separate limit. Your request can\n fail for this limit even if your plaintext meets the other requirements. The\n PackedPolicySize response element indicates by percentage how close the\n policies and tags for your request are to the upper size limit.

\n
" } }, "DurationSeconds": { @@ -2590,7 +2593,7 @@ "SourceIdentity": { "target": "com.amazonaws.sts#sourceIdentityType", "traits": { - "smithy.api#documentation": "

The value in the SourceIdentity attribute in the SAML assertion.

\n

You can require users to set a source identity value when they assume a role. You do\n this by using the sts:SourceIdentity condition key in a role trust policy.\n That way, actions that are taken with the role are associated with that user. After the\n source identity is set, the value cannot be changed. It is present in the request for all\n actions that are taken by the role and persists across chained\n role sessions. You can configure your SAML identity provider to use an attribute\n associated with your users, like user name or email, as the source identity when calling\n AssumeRoleWithSAML. You do this by adding an attribute to the SAML\n assertion. For more information about using source identity, see Monitor and control\n actions taken with assumed roles in the\n IAM User Guide.

\n

The regex used to validate this parameter is a string of characters \n consisting of upper- and lower-case alphanumeric characters with no spaces. You can \n also include underscores or any of the following characters: =,.@-

" + "smithy.api#documentation": "

The value in the SourceIdentity attribute in the SAML assertion. The source\n identity value persists across chained role\n sessions.

\n

You can require users to set a source identity value when they assume a role. You do\n this by using the sts:SourceIdentity condition key in a role trust policy.\n That way, actions that are taken with the role are associated with that user. After the\n source identity is set, the value cannot be changed. It is present in the request for all\n actions that are taken by the role and persists across chained role\n sessions. You can configure your SAML identity provider to use an attribute associated with\n your users, like user name or email, as the source identity when calling\n AssumeRoleWithSAML. You do this by adding an attribute to the SAML\n assertion. For more information about using source identity, see Monitor and control\n actions taken with assumed roles in the\n IAM User Guide.

\n

The regex used to validate this parameter is a string of characters \n consisting of upper- and lower-case alphanumeric characters with no spaces. You can \n also include underscores or any of the following characters: =,.@-

" } } }, @@ -2631,7 +2634,7 @@ } ], "traits": { - "smithy.api#documentation": "

Returns a set of temporary security credentials for users who have been authenticated in\n a mobile or web application with a web identity provider. Example providers include the\n OAuth 2.0 providers Login with Amazon and Facebook, or any OpenID Connect-compatible\n identity provider such as Google or Amazon Cognito federated identities.

\n \n

For mobile applications, we recommend that you use Amazon Cognito. You can use Amazon Cognito with the\n Amazon Web Services SDK for iOS Developer Guide and the Amazon Web Services SDK for Android Developer Guide to uniquely\n identify a user. You can also supply the user with a consistent identity throughout the\n lifetime of an application.

\n

To learn more about Amazon Cognito, see Amazon Cognito identity\n pools in Amazon Cognito Developer Guide.

\n
\n

Calling AssumeRoleWithWebIdentity does not require the use of Amazon Web Services\n security credentials. Therefore, you can distribute an application (for example, on mobile\n devices) that requests temporary security credentials without including long-term Amazon Web Services\n credentials in the application. You also don't need to deploy server-based proxy services\n that use long-term Amazon Web Services credentials. Instead, the identity of the caller is validated by\n using a token from the web identity provider. For a comparison of\n AssumeRoleWithWebIdentity with the other API operations that produce\n temporary credentials, see Requesting Temporary Security\n Credentials and Comparing the\n Amazon Web Services STS API operations in the IAM User Guide.

\n

The temporary security credentials returned by this API consist of an access key ID, a\n secret access key, and a security token. Applications can use these temporary security\n credentials to sign calls to Amazon Web Services service API operations.

\n

\n Session Duration\n

\n

By default, the temporary security credentials created by\n AssumeRoleWithWebIdentity last for one hour. However, you can use the\n optional DurationSeconds parameter to specify the duration of your session.\n You can provide a value from 900 seconds (15 minutes) up to the maximum session duration\n setting for the role. This setting can have a value from 1 hour to 12 hours. To learn how\n to view the maximum value for your role, see View the\n Maximum Session Duration Setting for a Role in the\n IAM User Guide. The maximum session duration limit applies when\n you use the AssumeRole* API operations or the assume-role* CLI\n commands. However the limit does not apply when you use those operations to create a\n console URL. For more information, see Using IAM Roles in the\n IAM User Guide.

\n

\n Permissions\n

\n

The temporary security credentials created by AssumeRoleWithWebIdentity can\n be used to make API calls to any Amazon Web Services service with the following exception: you cannot\n call the STS GetFederationToken or GetSessionToken API\n operations.

\n

(Optional) You can pass inline or managed session policies to\n this operation. You can pass a single JSON policy document to use as an inline session\n policy. You can also specify up to 10 managed policy Amazon Resource Names (ARNs) to use as\n managed session policies. The plaintext that you use for both inline and managed session\n policies can't exceed 2,048 characters. Passing policies to this operation returns new \n temporary credentials. The resulting session's permissions are the intersection of the \n role's identity-based policy and the session policies. You can use the role's temporary \n credentials in subsequent Amazon Web Services API calls to access resources in the account that owns \n the role. You cannot use session policies to grant more permissions than those allowed \n by the identity-based policy of the role that is being assumed. For more information, see\n Session\n Policies in the IAM User Guide.

\n

\n Tags\n

\n

(Optional) You can configure your IdP to pass attributes into your web identity token as\n session tags. Each session tag consists of a key name and an associated value. For more\n information about session tags, see Passing Session Tags in STS in the\n IAM User Guide.

\n

You can pass up to 50 session tags. The plaintext session tag keys can’t exceed 128\n characters and the values can’t exceed 256 characters. For these and additional limits, see\n IAM\n and STS Character Limits in the IAM User Guide.

\n \n

An Amazon Web Services conversion compresses the passed inline session policy, managed policy ARNs,\n and session tags into a packed binary format that has a separate limit. Your request can\n fail for this limit even if your plaintext meets the other requirements. The\n PackedPolicySize response element indicates by percentage how close the\n policies and tags for your request are to the upper size limit.

\n
\n

You can pass a session tag with the same key as a tag that is attached to the role. When\n you do, the session tag overrides the role tag with the same key.

\n

An administrator must grant you the permissions necessary to pass session tags. The\n administrator can also create granular permissions to allow you to pass only specific\n session tags. For more information, see Tutorial: Using Tags\n for Attribute-Based Access Control in the\n IAM User Guide.

\n

You can set the session tags as transitive. Transitive tags persist during role\n chaining. For more information, see Chaining Roles\n with Session Tags in the IAM User Guide.

\n

\n Identities\n

\n

Before your application can call AssumeRoleWithWebIdentity, you must have\n an identity token from a supported identity provider and create a role that the application\n can assume. The role that your application assumes must trust the identity provider that is\n associated with the identity token. In other words, the identity provider must be specified\n in the role's trust policy.

\n \n

Calling AssumeRoleWithWebIdentity can result in an entry in your\n CloudTrail logs. The entry includes the Subject of\n the provided web identity token. We recommend that you avoid using any personally\n identifiable information (PII) in this field. For example, you could instead use a GUID\n or a pairwise identifier, as suggested\n in the OIDC specification.

\n
\n

For more information about how to use web identity federation and the\n AssumeRoleWithWebIdentity API, see the following resources:

\n ", + "smithy.api#documentation": "

Returns a set of temporary security credentials for users who have been authenticated in\n a mobile or web application with a web identity provider. Example providers include the\n OAuth 2.0 providers Login with Amazon and Facebook, or any OpenID Connect-compatible\n identity provider such as Google or Amazon Cognito federated identities.

\n \n

For mobile applications, we recommend that you use Amazon Cognito. You can use Amazon Cognito with the\n Amazon Web Services SDK for iOS Developer Guide and the Amazon Web Services SDK for Android Developer Guide to uniquely\n identify a user. You can also supply the user with a consistent identity throughout the\n lifetime of an application.

\n

To learn more about Amazon Cognito, see Amazon Cognito identity\n pools in Amazon Cognito Developer Guide.

\n
\n

Calling AssumeRoleWithWebIdentity does not require the use of Amazon Web Services\n security credentials. Therefore, you can distribute an application (for example, on mobile\n devices) that requests temporary security credentials without including long-term Amazon Web Services\n credentials in the application. You also don't need to deploy server-based proxy services\n that use long-term Amazon Web Services credentials. Instead, the identity of the caller is validated by\n using a token from the web identity provider. For a comparison of\n AssumeRoleWithWebIdentity with the other API operations that produce\n temporary credentials, see Requesting Temporary Security\n Credentials and Compare STS\n credentials in the IAM User Guide.

\n

The temporary security credentials returned by this API consist of an access key ID, a\n secret access key, and a security token. Applications can use these temporary security\n credentials to sign calls to Amazon Web Services service API operations.

\n

\n Session Duration\n

\n

By default, the temporary security credentials created by\n AssumeRoleWithWebIdentity last for one hour. However, you can use the\n optional DurationSeconds parameter to specify the duration of your session.\n You can provide a value from 900 seconds (15 minutes) up to the maximum session duration\n setting for the role. This setting can have a value from 1 hour to 12 hours. To learn how\n to view the maximum value for your role, see Update the maximum session duration for a role in the\n IAM User Guide. The maximum session duration limit applies when\n you use the AssumeRole* API operations or the assume-role* CLI\n commands. However the limit does not apply when you use those operations to create a\n console URL. For more information, see Using IAM Roles in the\n IAM User Guide.

\n

\n Permissions\n

\n

The temporary security credentials created by AssumeRoleWithWebIdentity can\n be used to make API calls to any Amazon Web Services service with the following exception: you cannot\n call the STS GetFederationToken or GetSessionToken API\n operations.

\n

(Optional) You can pass inline or managed session policies to\n this operation. You can pass a single JSON policy document to use as an inline session\n policy. You can also specify up to 10 managed policy Amazon Resource Names (ARNs) to use as\n managed session policies. The plaintext that you use for both inline and managed session\n policies can't exceed 2,048 characters. Passing policies to this operation returns new \n temporary credentials. The resulting session's permissions are the intersection of the \n role's identity-based policy and the session policies. You can use the role's temporary \n credentials in subsequent Amazon Web Services API calls to access resources in the account that owns \n the role. You cannot use session policies to grant more permissions than those allowed \n by the identity-based policy of the role that is being assumed. For more information, see\n Session\n Policies in the IAM User Guide.

\n

\n Tags\n

\n

(Optional) You can configure your IdP to pass attributes into your web identity token as\n session tags. Each session tag consists of a key name and an associated value. For more\n information about session tags, see Passing Session Tags in STS in the\n IAM User Guide.

\n

You can pass up to 50 session tags. The plaintext session tag keys can’t exceed 128\n characters and the values can’t exceed 256 characters. For these and additional limits, see\n IAM\n and STS Character Limits in the IAM User Guide.

\n \n

An Amazon Web Services conversion compresses the passed inline session policy, managed policy ARNs,\n and session tags into a packed binary format that has a separate limit. Your request can\n fail for this limit even if your plaintext meets the other requirements. The\n PackedPolicySize response element indicates by percentage how close the\n policies and tags for your request are to the upper size limit.

\n
\n

You can pass a session tag with the same key as a tag that is attached to the role. When\n you do, the session tag overrides the role tag with the same key.

\n

An administrator must grant you the permissions necessary to pass session tags. The\n administrator can also create granular permissions to allow you to pass only specific\n session tags. For more information, see Tutorial: Using Tags\n for Attribute-Based Access Control in the\n IAM User Guide.

\n

You can set the session tags as transitive. Transitive tags persist during role\n chaining. For more information, see Chaining Roles\n with Session Tags in the IAM User Guide.

\n

\n Identities\n

\n

Before your application can call AssumeRoleWithWebIdentity, you must have\n an identity token from a supported identity provider and create a role that the application\n can assume. The role that your application assumes must trust the identity provider that is\n associated with the identity token. In other words, the identity provider must be specified\n in the role's trust policy.

\n \n

Calling AssumeRoleWithWebIdentity can result in an entry in your\n CloudTrail logs. The entry includes the Subject of\n the provided web identity token. We recommend that you avoid using any personally\n identifiable information (PII) in this field. For example, you could instead use a GUID\n or a pairwise identifier, as suggested\n in the OIDC specification.

\n
\n

For more information about how to use OIDC federation and the\n AssumeRoleWithWebIdentity API, see the following resources:

\n ", "smithy.api#examples": [ { "title": "To assume a role as an OpenID Connect-federated user", @@ -2670,21 +2673,21 @@ "RoleArn": { "target": "com.amazonaws.sts#arnType", "traits": { - "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the role that the caller is assuming.

", + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the role that the caller is assuming.

\n \n

Additional considerations apply to Amazon Cognito identity pools that assume cross-account IAM roles. The trust policies of these roles must accept the\n cognito-identity.amazonaws.com service principal and must contain the\n cognito-identity.amazonaws.com:aud condition key to restrict role\n assumption to users from your intended identity pools. A policy that trusts Amazon Cognito\n identity pools without this condition creates a risk that a user from an unintended\n identity pool can assume the role. For more information, see Trust policies for\n IAM roles in Basic (Classic) authentication in the Amazon Cognito\n Developer Guide.

\n
", "smithy.api#required": {} } }, "RoleSessionName": { "target": "com.amazonaws.sts#roleSessionNameType", "traits": { - "smithy.api#documentation": "

An identifier for the assumed role session. Typically, you pass the name or identifier\n that is associated with the user who is using your application. That way, the temporary\n security credentials that your application will use are associated with that user. This\n session name is included as part of the ARN and assumed role ID in the\n AssumedRoleUser response element.

\n

The regex used to validate this parameter is a string of characters \n consisting of upper- and lower-case alphanumeric characters with no spaces. You can \n also include underscores or any of the following characters: =,.@-

", + "smithy.api#documentation": "

An identifier for the assumed role session. Typically, you pass the name or identifier\n that is associated with the user who is using your application. That way, the temporary\n security credentials that your application will use are associated with that user. This\n session name is included as part of the ARN and assumed role ID in the\n AssumedRoleUser response element.

\n

For security purposes, administrators can view this field in CloudTrail logs to help identify who performed an action in Amazon Web Services. Your\n administrator might require that you specify your user name as the session name when you\n assume the role. For more information, see \n sts:RoleSessionName\n .

\n

The regex used to validate this parameter is a string of characters \n consisting of upper- and lower-case alphanumeric characters with no spaces. You can \n also include underscores or any of the following characters: =,.@-

", "smithy.api#required": {} } }, "WebIdentityToken": { "target": "com.amazonaws.sts#clientTokenType", "traits": { - "smithy.api#documentation": "

The OAuth 2.0 access token or OpenID Connect ID token that is provided by the identity\n provider. Your application must get this token by authenticating the user who is using your\n application with a web identity provider before the application makes an\n AssumeRoleWithWebIdentity call. Only tokens with RSA algorithms (RS256) are\n supported.

", + "smithy.api#documentation": "

The OAuth 2.0 access token or OpenID Connect ID token that is provided by the identity\n provider. Your application must get this token by authenticating the user who is using your\n application with a web identity provider before the application makes an\n AssumeRoleWithWebIdentity call. Timestamps in the token must be formatted\n as either an integer or a long integer. Only tokens with RSA algorithms (RS256) are\n supported.

", "smithy.api#required": {} } }, @@ -2703,7 +2706,7 @@ "Policy": { "target": "com.amazonaws.sts#sessionPolicyDocumentType", "traits": { - "smithy.api#documentation": "

An IAM policy in JSON format that you want to use as an inline session policy.

\n

This parameter is optional. Passing policies to this operation returns new \n temporary credentials. The resulting session's permissions are the intersection of the \n role's identity-based policy and the session policies. You can use the role's temporary \n credentials in subsequent Amazon Web Services API calls to access resources in the account that owns \n the role. You cannot use session policies to grant more permissions than those allowed \n by the identity-based policy of the role that is being assumed. For more information, see\n Session\n Policies in the IAM User Guide.

\n

The plaintext that you use for both inline and managed session policies can't exceed\n 2,048 characters. The JSON policy characters can be any ASCII character from the space\n character to the end of the valid character list (\\u0020 through \\u00FF). It can also\n include the tab (\\u0009), linefeed (\\u000A), and carriage return (\\u000D)\n characters.

\n \n

An Amazon Web Services conversion compresses the passed inline session policy, managed policy ARNs,\n and session tags into a packed binary format that has a separate limit. Your request can\n fail for this limit even if your plaintext meets the other requirements. The\n PackedPolicySize response element indicates by percentage how close the\n policies and tags for your request are to the upper size limit.

\n
" + "smithy.api#documentation": "

An IAM policy in JSON format that you want to use as an inline session policy.

\n

This parameter is optional. Passing policies to this operation returns new \n temporary credentials. The resulting session's permissions are the intersection of the \n role's identity-based policy and the session policies. You can use the role's temporary \n credentials in subsequent Amazon Web Services API calls to access resources in the account that owns \n the role. You cannot use session policies to grant more permissions than those allowed \n by the identity-based policy of the role that is being assumed. For more information, see\n Session\n Policies in the IAM User Guide.

\n

The plaintext that you use for both inline and managed session policies can't exceed\n 2,048 characters. The JSON policy characters can be any ASCII character from the space\n character to the end of the valid character list (\\u0020 through \\u00FF). It can also\n include the tab (\\u0009), linefeed (\\u000A), and carriage return (\\u000D)\n characters.

\n

For more information about role session permissions, see Session\n policies.

\n \n

An Amazon Web Services conversion compresses the passed inline session policy, managed policy ARNs,\n and session tags into a packed binary format that has a separate limit. Your request can\n fail for this limit even if your plaintext meets the other requirements. The\n PackedPolicySize response element indicates by percentage how close the\n policies and tags for your request are to the upper size limit.

\n
" } }, "DurationSeconds": { @@ -2759,7 +2762,7 @@ "SourceIdentity": { "target": "com.amazonaws.sts#sourceIdentityType", "traits": { - "smithy.api#documentation": "

The value of the source identity that is returned in the JSON web token (JWT) from the\n identity provider.

\n

You can require users to set a source identity value when they assume a role. You do\n this by using the sts:SourceIdentity condition key in a role trust policy.\n That way, actions that are taken with the role are associated with that user. After the\n source identity is set, the value cannot be changed. It is present in the request for all\n actions that are taken by the role and persists across chained\n role sessions. You can configure your identity provider to use an attribute\n associated with your users, like user name or email, as the source identity when calling\n AssumeRoleWithWebIdentity. You do this by adding a claim to the JSON web\n token. To learn more about OIDC tokens and claims, see Using Tokens with User Pools in the Amazon Cognito Developer Guide.\n For more information about using source identity, see Monitor and control\n actions taken with assumed roles in the\n IAM User Guide.

\n

The regex used to validate this parameter is a string of characters \n consisting of upper- and lower-case alphanumeric characters with no spaces. You can \n also include underscores or any of the following characters: =,.@-

" + "smithy.api#documentation": "

The value of the source identity that is returned in the JSON web token (JWT) from the\n identity provider.

\n

You can require users to set a source identity value when they assume a role. You do\n this by using the sts:SourceIdentity condition key in a role trust policy.\n That way, actions that are taken with the role are associated with that user. After the\n source identity is set, the value cannot be changed. It is present in the request for all\n actions that are taken by the role and persists across chained role\n sessions. You can configure your identity provider to use an attribute associated with your\n users, like user name or email, as the source identity when calling\n AssumeRoleWithWebIdentity. You do this by adding a claim to the JSON web\n token. To learn more about OIDC tokens and claims, see Using Tokens with User Pools in the Amazon Cognito Developer Guide.\n For more information about using source identity, see Monitor and control\n actions taken with assumed roles in the\n IAM User Guide.

\n

The regex used to validate this parameter is a string of characters \n consisting of upper- and lower-case alphanumeric characters with no spaces. You can \n also include underscores or any of the following characters: =,.@-

" } } }, @@ -2768,6 +2771,96 @@ "smithy.api#output": {} } }, + "com.amazonaws.sts#AssumeRoot": { + "type": "operation", + "input": { + "target": "com.amazonaws.sts#AssumeRootRequest" + }, + "output": { + "target": "com.amazonaws.sts#AssumeRootResponse" + }, + "errors": [ + { + "target": "com.amazonaws.sts#ExpiredTokenException" + }, + { + "target": "com.amazonaws.sts#RegionDisabledException" + } + ], + "traits": { + "smithy.api#documentation": "

Returns a set of short term credentials you can use to perform privileged tasks in a\n member account.

\n

Before you can launch a privileged session, you must have enabled centralized root\n access in your organization. For steps to enable this feature, see Centralize root access for member accounts in the IAM User\n Guide.

\n \n

The global endpoint is not supported for AssumeRoot. You must send this request to a\n Regional STS endpoint. For more information, see Endpoints.

\n
\n

You can track AssumeRoot in CloudTrail logs to determine what actions were performed in a\n session. For more information, see Track privileged tasks\n in CloudTrail in the IAM User Guide.

", + "smithy.api#examples": [ + { + "title": "To launch a privileged session", + "documentation": "The following command retrieves a set of short-term credentials you can use to unlock an S3 bucket for a member account by removing the bucket policy.", + "input": { + "TargetPrincipal": "111122223333", + "TaskPolicyArn": { + "arn": "arn:aws:iam::aws:policy/root-task/S3UnlockBucketPolicy" + }, + "DurationSeconds": 900 + }, + "output": { + "Credentials": { + "SecretAccessKey": "9drTJvcXLB89EXAMPLELB8923FB892xMFI", + "SessionToken": "AQoXdzELDDY//////////wEaoAK1wvxJY12r2IrDFT2IvAzTCn3zHoZ7YNtpiQLF0MqZye/qwjzP2iEXAMPLEbw/m3hsj8VBTkPORGvr9jM5sgP+w9IZWZnU+LWhmg+a5fDi2oTGUYcdg9uexQ4mtCHIHfi4citgqZTgco40Yqr4lIlo4V2b2Dyauk0eYFNebHtYlFVgAUj+7Indz3LU0aTWk1WKIjHmmMCIoTkyYp/k7kUG7moeEYKSitwQIi6Gjn+nyzM+PtoA3685ixzv0R7i5rjQi0YE0lf1oeie3bDiNHncmzosRM6SFiPzSvp6h/32xQuZsjcypmwsPSDtTPYcs0+YN/8BRi2/IcrxSpnWEXAMPLEXSDFTAQAM6Dl9zR0tXoybnlrZIwMLlMi1Kcgo5OytwU=", + "Expiration": "2024-11-15T00:05:07Z", + "AccessKeyId": "ASIAJEXAMPLEXEG2JICEA" + }, + "SourceIdentity": "Alice" + } + } + ] + } + }, + "com.amazonaws.sts#AssumeRootRequest": { + "type": "structure", + "members": { + "TargetPrincipal": { + "target": "com.amazonaws.sts#TargetPrincipalType", + "traits": { + "smithy.api#documentation": "

The member account principal ARN or account ID.

", + "smithy.api#required": {} + } + }, + "TaskPolicyArn": { + "target": "com.amazonaws.sts#PolicyDescriptorType", + "traits": { + "smithy.api#documentation": "

The identity based policy that scopes the session to the privileged tasks that can be\n performed. You can use one of following Amazon Web Services managed policies to scope\n root session actions. You can add additional customer managed policies to further limit the\n permissions for the root session.

\n ", + "smithy.api#required": {} + } + }, + "DurationSeconds": { + "target": "com.amazonaws.sts#RootDurationSecondsType", + "traits": { + "smithy.api#documentation": "

The duration, in seconds, of the privileged session. The value can range from 0 seconds\n up to the maximum session duration of 900 seconds (15 minutes). If you specify a value\n higher than this setting, the operation fails.

\n

By default, the value is set to 900 seconds.

" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.amazonaws.sts#AssumeRootResponse": { + "type": "structure", + "members": { + "Credentials": { + "target": "com.amazonaws.sts#Credentials", + "traits": { + "smithy.api#documentation": "

The temporary security credentials, which include an access key ID, a secret access key,\n and a security token.

\n \n

The size of the security token that STS API operations return is not fixed. We\n strongly recommend that you make no assumptions about the maximum size.

\n
" + } + }, + "SourceIdentity": { + "target": "com.amazonaws.sts#sourceIdentityType", + "traits": { + "smithy.api#documentation": "

The source identity specified by the principal that is calling the\n AssumeRoot operation.

\n

You can use the aws:SourceIdentity condition key to control access based on\n the value of source identity. For more information about using source identity, see Monitor and control\n actions taken with assumed roles in the\n IAM User Guide.

\n

The regex used to validate this parameter is a string of characters consisting of upper-\n and lower-case alphanumeric characters with no spaces. You can also include underscores or\n any of the following characters: =,.@-

" + } + } + }, + "traits": { + "smithy.api#output": {} + } + }, "com.amazonaws.sts#AssumedRoleUser": { "type": "structure", "members": { @@ -2987,6 +3080,24 @@ "Account": "123456789012", "Arn": "arn:aws:iam::123456789012:user/Alice" } + }, + { + "title": "To get details about a calling user federated with AssumeRole", + "documentation": "This example shows a request and response made with temporary credentials created by AssumeRole. The name of the assumed role is my-role-name, and the RoleSessionName is set to my-role-session-name.", + "output": { + "UserId": "AKIAI44QH8DHBEXAMPLE:my-role-session-name", + "Account": "123456789012", + "Arn": "arn:aws:sts::123456789012:assumed-role/my-role-name/my-role-session-name" + } + }, + { + "title": "To get details about a calling user federated with GetFederationToken", + "documentation": "This example shows a request and response made with temporary credentials created by using GetFederationToken. The Name parameter is set to my-federated-user-name.", + "output": { + "UserId": "123456789012:my-federated-user-name", + "Account": "123456789012", + "Arn": "arn:aws:sts::123456789012:federated-user/my-federated-user-name" + } } ] } @@ -3045,7 +3156,7 @@ } ], "traits": { - "smithy.api#documentation": "

Returns a set of temporary security credentials (consisting of an access key ID, a\n secret access key, and a security token) for a user. A typical use is in a proxy\n application that gets temporary security credentials on behalf of distributed applications\n inside a corporate network.

\n

You must call the GetFederationToken operation using the long-term security\n credentials of an IAM user. As a result, this call is appropriate in\n contexts where those credentials can be safeguarded, usually in a server-based application.\n For a comparison of GetFederationToken with the other API operations that\n produce temporary credentials, see Requesting Temporary Security\n Credentials and Comparing the\n Amazon Web Services STS API operations in the IAM User Guide.

\n

Although it is possible to call GetFederationToken using the security\n credentials of an Amazon Web Services account root user rather than an IAM user that you\n create for the purpose of a proxy application, we do not recommend it. For more\n information, see Safeguard your root user credentials and don't use them for everyday tasks in the\n IAM User Guide.

\n \n

You can create a mobile-based or browser-based app that can authenticate users using\n a web identity provider like Login with Amazon, Facebook, Google, or an OpenID\n Connect-compatible identity provider. In this case, we recommend that you use Amazon Cognito or\n AssumeRoleWithWebIdentity. For more information, see Federation Through a Web-based Identity Provider in the\n IAM User Guide.

\n
\n

\n Session duration\n

\n

The temporary credentials are valid for the specified duration, from 900 seconds (15\n minutes) up to a maximum of 129,600 seconds (36 hours). The default session duration is\n 43,200 seconds (12 hours). Temporary credentials obtained by using the root user\n credentials have a maximum duration of 3,600 seconds (1 hour).

\n

\n Permissions\n

\n

You can use the temporary credentials created by GetFederationToken in any\n Amazon Web Services service with the following exceptions:

\n
    \n
  • \n

    You cannot call any IAM operations using the CLI or the Amazon Web Services API. This\n limitation does not apply to console sessions.

    \n
  • \n
  • \n

    You cannot call any STS operations except GetCallerIdentity.

    \n
  • \n
\n

You can use temporary credentials for single sign-on (SSO) to the console.

\n

You must pass an inline or managed session policy to\n this operation. You can pass a single JSON policy document to use as an inline session\n policy. You can also specify up to 10 managed policy Amazon Resource Names (ARNs) to use as\n managed session policies. The plaintext that you use for both inline and managed session\n policies can't exceed 2,048 characters.

\n

Though the session policy parameters are optional, if you do not pass a policy, then the\n resulting federated user session has no permissions. When you pass session policies, the\n session permissions are the intersection of the IAM user policies and the\n session policies that you pass. This gives you a way to further restrict the permissions\n for a federated user. You cannot use session policies to grant more permissions than those\n that are defined in the permissions policy of the IAM user. For more\n information, see Session Policies in\n the IAM User Guide. For information about using\n GetFederationToken to create temporary security credentials, see GetFederationToken—Federation Through a Custom Identity Broker.

\n

You can use the credentials to access a resource that has a resource-based policy. If\n that policy specifically references the federated user session in the\n Principal element of the policy, the session has the permissions allowed by\n the policy. These permissions are granted in addition to the permissions granted by the\n session policies.

\n

\n Tags\n

\n

(Optional) You can pass tag key-value pairs to your session. These are called session\n tags. For more information about session tags, see Passing Session Tags in STS in the\n IAM User Guide.

\n \n

You can create a mobile-based or browser-based app that can authenticate users using\n a web identity provider like Login with Amazon, Facebook, Google, or an OpenID\n Connect-compatible identity provider. In this case, we recommend that you use Amazon Cognito or\n AssumeRoleWithWebIdentity. For more information, see Federation Through a Web-based Identity Provider in the\n IAM User Guide.

\n
\n

An administrator must grant you the permissions necessary to pass session tags. The\n administrator can also create granular permissions to allow you to pass only specific\n session tags. For more information, see Tutorial: Using Tags\n for Attribute-Based Access Control in the\n IAM User Guide.

\n

Tag key–value pairs are not case sensitive, but case is preserved. This means that you\n cannot have separate Department and department tag keys. Assume\n that the user that you are federating has the\n Department=Marketing tag and you pass the\n department=engineering session tag. Department\n and department are not saved as separate tags, and the session tag passed in\n the request takes precedence over the user tag.

", + "smithy.api#documentation": "

Returns a set of temporary security credentials (consisting of an access key ID, a\n secret access key, and a security token) for a user. A typical use is in a proxy\n application that gets temporary security credentials on behalf of distributed applications\n inside a corporate network.

\n

You must call the GetFederationToken operation using the long-term security\n credentials of an IAM user. As a result, this call is appropriate in\n contexts where those credentials can be safeguarded, usually in a server-based application.\n For a comparison of GetFederationToken with the other API operations that\n produce temporary credentials, see Requesting Temporary Security\n Credentials and Compare STS\n credentials in the IAM User Guide.

\n

Although it is possible to call GetFederationToken using the security\n credentials of an Amazon Web Services account root user rather than an IAM user that you\n create for the purpose of a proxy application, we do not recommend it. For more\n information, see Safeguard your root user credentials and don't use them for everyday tasks in the\n IAM User Guide.

\n \n

You can create a mobile-based or browser-based app that can authenticate users using\n a web identity provider like Login with Amazon, Facebook, Google, or an OpenID\n Connect-compatible identity provider. In this case, we recommend that you use Amazon Cognito or\n AssumeRoleWithWebIdentity. For more information, see Federation Through a Web-based Identity Provider in the\n IAM User Guide.

\n
\n

\n Session duration\n

\n

The temporary credentials are valid for the specified duration, from 900 seconds (15\n minutes) up to a maximum of 129,600 seconds (36 hours). The default session duration is\n 43,200 seconds (12 hours). Temporary credentials obtained by using the root user\n credentials have a maximum duration of 3,600 seconds (1 hour).

\n

\n Permissions\n

\n

You can use the temporary credentials created by GetFederationToken in any\n Amazon Web Services service with the following exceptions:

\n
    \n
  • \n

    You cannot call any IAM operations using the CLI or the Amazon Web Services API. This\n limitation does not apply to console sessions.

    \n
  • \n
  • \n

    You cannot call any STS operations except GetCallerIdentity.

    \n
  • \n
\n

You can use temporary credentials for single sign-on (SSO) to the console.

\n

You must pass an inline or managed session policy to\n this operation. You can pass a single JSON policy document to use as an inline session\n policy. You can also specify up to 10 managed policy Amazon Resource Names (ARNs) to use as\n managed session policies. The plaintext that you use for both inline and managed session\n policies can't exceed 2,048 characters.

\n

Though the session policy parameters are optional, if you do not pass a policy, then the\n resulting federated user session has no permissions. When you pass session policies, the\n session permissions are the intersection of the IAM user policies and the\n session policies that you pass. This gives you a way to further restrict the permissions\n for a federated user. You cannot use session policies to grant more permissions than those\n that are defined in the permissions policy of the IAM user. For more\n information, see Session Policies in\n the IAM User Guide. For information about using\n GetFederationToken to create temporary security credentials, see GetFederationToken—Federation Through a Custom Identity Broker.

\n

You can use the credentials to access a resource that has a resource-based policy. If\n that policy specifically references the federated user session in the\n Principal element of the policy, the session has the permissions allowed by\n the policy. These permissions are granted in addition to the permissions granted by the\n session policies.

\n

\n Tags\n

\n

(Optional) You can pass tag key-value pairs to your session. These are called session\n tags. For more information about session tags, see Passing Session Tags in STS in the\n IAM User Guide.

\n \n

You can create a mobile-based or browser-based app that can authenticate users using\n a web identity provider like Login with Amazon, Facebook, Google, or an OpenID\n Connect-compatible identity provider. In this case, we recommend that you use Amazon Cognito or\n AssumeRoleWithWebIdentity. For more information, see Federation Through a Web-based Identity Provider in the\n IAM User Guide.

\n
\n

An administrator must grant you the permissions necessary to pass session tags. The\n administrator can also create granular permissions to allow you to pass only specific\n session tags. For more information, see Tutorial: Using Tags\n for Attribute-Based Access Control in the\n IAM User Guide.

\n

Tag key–value pairs are not case sensitive, but case is preserved. This means that you\n cannot have separate Department and department tag keys. Assume\n that the user that you are federating has the\n Department=Marketing tag and you pass the\n department=engineering session tag. Department\n and department are not saved as separate tags, and the session tag passed in\n the request takes precedence over the user tag.

", "smithy.api#examples": [ { "title": "To get temporary credentials for a role by using GetFederationToken", @@ -3162,7 +3273,7 @@ } ], "traits": { - "smithy.api#documentation": "

Returns a set of temporary credentials for an Amazon Web Services account or IAM user.\n The credentials consist of an access key ID, a secret access key, and a security token.\n Typically, you use GetSessionToken if you want to use MFA to protect\n programmatic calls to specific Amazon Web Services API operations like Amazon EC2\n StopInstances.

\n

MFA-enabled IAM users must call GetSessionToken and submit\n an MFA code that is associated with their MFA device. Using the temporary security\n credentials that the call returns, IAM users can then make programmatic\n calls to API operations that require MFA authentication. An incorrect MFA code causes the\n API to return an access denied error. For a comparison of GetSessionToken with\n the other API operations that produce temporary credentials, see Requesting\n Temporary Security Credentials and Comparing the\n Amazon Web Services STS API operations in the IAM User Guide.

\n \n

No permissions are required for users to perform this operation. The purpose of the\n sts:GetSessionToken operation is to authenticate the user using MFA. You\n cannot use policies to control authentication operations. For more information, see\n Permissions for GetSessionToken in the\n IAM User Guide.

\n
\n

\n Session Duration\n

\n

The GetSessionToken operation must be called by using the long-term Amazon Web Services\n security credentials of an IAM user. Credentials that are created by IAM users are valid for the duration that you specify. This duration can range\n from 900 seconds (15 minutes) up to a maximum of 129,600 seconds (36 hours), with a default\n of 43,200 seconds (12 hours). Credentials based on account credentials can range from 900\n seconds (15 minutes) up to 3,600 seconds (1 hour), with a default of 1 hour.

\n

\n Permissions\n

\n

The temporary security credentials created by GetSessionToken can be used\n to make API calls to any Amazon Web Services service with the following exceptions:

\n
    \n
  • \n

    You cannot call any IAM API operations unless MFA authentication information is\n included in the request.

    \n
  • \n
  • \n

    You cannot call any STS API except\n AssumeRole or GetCallerIdentity.

    \n
  • \n
\n

The credentials that GetSessionToken returns are based on permissions\n associated with the IAM user whose credentials were used to call the\n operation. The temporary credentials have the same permissions as the IAM user.

\n \n

Although it is possible to call GetSessionToken using the security\n credentials of an Amazon Web Services account root user rather than an IAM user, we do\n not recommend it. If GetSessionToken is called using root user\n credentials, the temporary credentials have root user permissions. For more\n information, see Safeguard your root user credentials and don't use them for everyday tasks in the\n IAM User Guide\n

\n
\n

For more information about using GetSessionToken to create temporary\n credentials, see Temporary\n Credentials for Users in Untrusted Environments in the\n IAM User Guide.

", + "smithy.api#documentation": "

Returns a set of temporary credentials for an Amazon Web Services account or IAM user.\n The credentials consist of an access key ID, a secret access key, and a security token.\n Typically, you use GetSessionToken if you want to use MFA to protect\n programmatic calls to specific Amazon Web Services API operations like Amazon EC2\n StopInstances.

\n

MFA-enabled IAM users must call GetSessionToken and submit\n an MFA code that is associated with their MFA device. Using the temporary security\n credentials that the call returns, IAM users can then make programmatic\n calls to API operations that require MFA authentication. An incorrect MFA code causes the\n API to return an access denied error. For a comparison of GetSessionToken with\n the other API operations that produce temporary credentials, see Requesting\n Temporary Security Credentials and Compare STS\n credentials in the IAM User Guide.

\n \n

No permissions are required for users to perform this operation. The purpose of the\n sts:GetSessionToken operation is to authenticate the user using MFA. You\n cannot use policies to control authentication operations. For more information, see\n Permissions for GetSessionToken in the\n IAM User Guide.

\n
\n

\n Session Duration\n

\n

The GetSessionToken operation must be called by using the long-term Amazon Web Services\n security credentials of an IAM user. Credentials that are created by IAM users are valid for the duration that you specify. This duration can range\n from 900 seconds (15 minutes) up to a maximum of 129,600 seconds (36 hours), with a default\n of 43,200 seconds (12 hours). Credentials based on account credentials can range from 900\n seconds (15 minutes) up to 3,600 seconds (1 hour), with a default of 1 hour.

\n

\n Permissions\n

\n

The temporary security credentials created by GetSessionToken can be used\n to make API calls to any Amazon Web Services service with the following exceptions:

\n
    \n
  • \n

    You cannot call any IAM API operations unless MFA authentication information is\n included in the request.

    \n
  • \n
  • \n

    You cannot call any STS API except\n AssumeRole or GetCallerIdentity.

    \n
  • \n
\n

The credentials that GetSessionToken returns are based on permissions\n associated with the IAM user whose credentials were used to call the\n operation. The temporary credentials have the same permissions as the IAM user.

\n \n

Although it is possible to call GetSessionToken using the security\n credentials of an Amazon Web Services account root user rather than an IAM user, we do\n not recommend it. If GetSessionToken is called using root user\n credentials, the temporary credentials have root user permissions. For more\n information, see Safeguard your root user credentials and don't use them for everyday tasks in the\n IAM User Guide\n

\n
\n

For more information about using GetSessionToken to create temporary\n credentials, see Temporary\n Credentials for Users in Untrusted Environments in the\n IAM User Guide.

", "smithy.api#examples": [ { "title": "To get temporary credentials for an IAM user or an AWS account", @@ -3237,7 +3348,7 @@ "code": "IDPCommunicationError", "httpResponseCode": 400 }, - "smithy.api#documentation": "

The request could not be fulfilled because the identity provider (IDP) that\n was asked to verify the incoming identity token could not be reached. This is often a\n transient error caused by network conditions. Retry the request a limited number of\n times so that you don't exceed the request rate. If the error persists, the\n identity provider might be down or not responding.

", + "smithy.api#documentation": "

The request could not be fulfilled because the identity provider (IDP) that was asked\n to verify the incoming identity token could not be reached. This is often a transient\n error caused by network conditions. Retry the request a limited number of times so that\n you don't exceed the request rate. If the error persists, the identity provider might be\n down or not responding.

", "smithy.api#error": "client", "smithy.api#httpError": 400 } @@ -3271,7 +3382,7 @@ "code": "InvalidAuthorizationMessageException", "httpResponseCode": 400 }, - "smithy.api#documentation": "

The error returned if the message passed to DecodeAuthorizationMessage\n was invalid. This can happen if the token contains invalid characters, such as\n linebreaks.

", + "smithy.api#documentation": "

The error returned if the message passed to DecodeAuthorizationMessage\n was invalid. This can happen if the token contains invalid characters, such as line\n breaks, or if the message has expired.

", "smithy.api#error": "client", "smithy.api#httpError": 400 } @@ -3328,7 +3439,7 @@ "code": "PackedPolicyTooLarge", "httpResponseCode": 400 }, - "smithy.api#documentation": "

The request was rejected because the total packed size of the session policies and\n session tags combined was too large. An Amazon Web Services conversion compresses the session policy\n document, session policy ARNs, and session tags into a packed binary format that has a\n separate limit. The error message indicates by percentage how close the policies and\n tags are to the upper size limit. For more information, see Passing Session Tags in STS in\n the IAM User Guide.

\n

You could receive this error even though you meet other defined session policy and\n session tag limits. For more information, see IAM and STS Entity\n Character Limits in the IAM User Guide.

", + "smithy.api#documentation": "

The request was rejected because the total packed size of the session policies and\n session tags combined was too large. An Amazon Web Services conversion compresses the session policy\n document, session policy ARNs, and session tags into a packed binary format that has a\n separate limit. The error message indicates by percentage how close the policies and\n tags are to the upper size limit. For more information, see Passing Session Tags in STS in\n the IAM User Guide.

\n

You could receive this error even though you meet other defined session policy and\n session tag limits. For more information, see IAM and STS Entity Character Limits in the IAM User\n Guide.

", "smithy.api#error": "client", "smithy.api#httpError": 400 } @@ -3391,11 +3502,20 @@ "code": "RegionDisabledException", "httpResponseCode": 403 }, - "smithy.api#documentation": "

STS is not activated in the requested region for the account that is being asked to\n generate credentials. The account administrator must use the IAM console to activate STS\n in that region. For more information, see Activating and\n Deactivating Amazon Web Services STS in an Amazon Web Services Region in the IAM User\n Guide.

", + "smithy.api#documentation": "

STS is not activated in the requested region for the account that is being asked to\n generate credentials. The account administrator must use the IAM console to activate\n STS in that region. For more information, see Activating and\n Deactivating STS in an Amazon Web Services Region in the IAM User\n Guide.

", "smithy.api#error": "client", "smithy.api#httpError": 403 } }, + "com.amazonaws.sts#RootDurationSecondsType": { + "type": "integer", + "traits": { + "smithy.api#range": { + "min": 0, + "max": 900 + } + } + }, "com.amazonaws.sts#SAMLAssertionType": { "type": "string", "traits": { @@ -3434,6 +3554,15 @@ "smithy.api#documentation": "

You can pass custom key-value pair attributes when you assume a role or federate a user.\n These are called session tags. You can then use the session tags to control access to\n resources. For more information, see Tagging Amazon Web Services STS Sessions in the\n IAM User Guide.

" } }, + "com.amazonaws.sts#TargetPrincipalType": { + "type": "string", + "traits": { + "smithy.api#length": { + "min": 12, + "max": 2048 + } + } + }, "com.amazonaws.sts#accessKeyIdType": { "type": "string", "traits": {