Tag Archives: AWS IAM Identity Center

Integrate Amazon Redshift and IAM Identity Center with enhanced VPC routing

Post Syndicated from Maneesh Sharma original https://aws.amazon.com/blogs/big-data/integrate-amazon-redshift-and-iam-identity-center-with-enhanced-vpc-routing/

You can now use AWS IAM Identity Center authentication with enhanced VPC routing on Amazon Redshift clusters and Amazon Redshift Serverless workgroups. Your users get single sign-on with their existing corporate credentials, and the authentication traffic originates from within your virtual private cloud (VPC) through a VPC endpoint, staying on the AWS private network.

We covered the IAM Identity Center integration end to end in a previous post, Integrate Identity Provider (IdP) with Amazon Redshift Query Editor V2 and SQL Client using AWS IAM Identity Center for seamless Single Sign-On. That post shows how users sign in through Query Editor V2 and third-party SQL clients, and how their identity is propagated to the AWS analytics services.

Many organizations also require that this traffic doesn’t traverse the public internet. Enhanced VPC routing sends everything between your cluster and other AWS services through your VPC, where you can govern it with security groups, network ACLs, and endpoint policies, and observe it in VPC Flow Logs. For teams with data residency, regulatory, or network isolation requirements, it’s often mandatory.

In this post, we show how the new IAM Identity Center VPC endpoints provide a private network path for authentication traffic when enhanced VPC routing is enabled. We walk through the endpoint setup and validate the flow from Query Editor V2 and a SQL client. To use this feature, your Amazon Redshift cluster must be running patch 204 or later, and you must create the VPC endpoints described in the following steps.

Solution overview

When a user signs in with IAM Identity Center from Query Editor V2 or a SQL client, Amazon Redshift doesn’t simply accept the token the client presents. It validates the token with IAM Identity Center and resolves the caller’s identity before the session is established. These calls originate from Amazon Redshift, not from your client, and enhanced VPC routing changes the network path they take.

Authentication flow with enhanced VPC routing

With enhanced VPC routing enabled, the calls Amazon Redshift makes to IAM Identity Center traverse your VPC and follow your networking configuration. The flow is as follows:

  1. The user signs in through Query Editor V2 or a SQL client and authenticates against your identity provider through IAM Identity Center.
  2. IAM Identity Center issues an access token, which the client presents to Amazon Redshift on the database connection.
  3. Amazon Redshift validates the access token against the IAM Identity Center OpenID Connect (OIDC) endpoint, confirming the token’s scopes and the user’s entitlement to the Amazon Redshift application. It doesn’t trust the token the client presented without verification.
  4. Amazon Redshift calls the same OIDC endpoint again to exchange that token for one scoped to Amazon Redshift.
  5. Amazon Redshift calls the IAM Identity Center identity store to resolve the user and their group membership.
  6. Amazon Redshift maps the resolved identity to a database identity, applies role-based access control, and establishes the session.

The following diagram illustrates this authentication flow, showing how each call from Amazon Redshift to IAM Identity Center traverses the VPC through interface endpoints.

Authentication flow showing Amazon Redshift reaching the IAM Identity Center OIDC and identity store endpoints through VPC endpoints

Figure 1: IAM Identity Center authentication flow with enhanced VPC routing enabled

As shown in the diagram, steps 3–5 represent calls that Amazon Redshift makes through your VPC to the IAM Identity Center OIDC and identity store endpoints.

Because a cluster with no public IP address doesn’t use an internet gateway route, Amazon Redshift has no path to IAM Identity Center by default. You provide one with interface VPC endpoints for the two services it needs, the IAM Identity Center OIDC endpoint and the identity store endpoint, which keep the traffic on the AWS network over AWS PrivateLink.

This solution covers the following steps:

  1. Enable enhanced VPC routing.
  2. Verify the DNS attributes on your VPC.
  3. Create the interface VPC endpoints required for IAM Identity Center authentication.
  4. Create interface VPC endpoints for AWS Glue and AWS Lake Formation (optional, if you query a data lake or lakehouse).
  5. Create an Amazon Simple Storage Service (Amazon S3) gateway endpoint.
  6. Validate that the endpoints are available and using private DNS.
  7. Test single sign-on with Amazon Redshift Query Editor V2.
  8. Test single sign-on with a SQL client using the Amazon Redshift JDBC driver.
  9. Verify the calls on AWS CloudTrail.

Prerequisites

You should have the following prerequisites:

  • An AWS account with an Amazon Redshift provisioned cluster. Amazon Redshift Serverless also supports enhanced VPC routing, and the same endpoints apply, but you substitute the equivalent workgroup commands and settings.
  • A working IAM Identity Center integration with Amazon Redshift, as described in Integrate Identity Provider (IdP) with Amazon Redshift Query Editor V2 and SQL Client using AWS IAM Identity Center for seamless Single Sign-On.
  • A cluster running patch 204 or later, which is the minimum maintenance version that supports IAM Identity Center authentication with enhanced VPC routing.
  • Permissions to create VPC endpoints in the VPC where the cluster runs, specifically ec2:CreateVpcEndpoint and ec2:DescribeVpcEndpoints.
  • Optionally, an Amazon Elastic Compute Cloud (Amazon EC2) instance inside the same VPC with SQL Workbench/J and the Amazon Redshift JDBC driver, version 2.1.0.30 or later with its dependent libraries, to test the SQL client flow.

Walkthrough

The examples in this post use the Canada (Central) AWS Region (ca-central-1). Replace all placeholder values with your own.

Step 1: Enable enhanced VPC routing and turn off public access

To control network traffic with Amazon Redshift enhanced VPC routing, you enable enhanced VPC routing in Amazon Redshift. The cluster or workgroup must also not be publicly accessible, so that traffic to IAM Identity Center and other services goes through your VPC endpoints rather than an internet gateway. Follow the instructions in Enable enhanced VPC routing to enable it for a new provisioned cluster or serverless workgroup. For an existing cluster or workgroup, follow these steps:

  1. Sign in to the AWS Management Console and open the Amazon Redshift console at https://console.aws.amazon.com/redshiftv2/.
  2. Open the provisioned cluster or serverless workgroup you want to modify:
    1. For an existing provisioned cluster – choose the Properties tab.
    2. For an existing serverless workgroup – choose the Data access tab.
  3. In the Network and security section, choose Edit.
    1. Select Turn on enhanced VPC routing to route network traffic through the VPC.
    2. If Turn on Publicly accessible is enabled, clear it so the cluster or workgroup is not publicly accessible.
  4. Choose Save changes.

The following screenshot shows the Network and security section with enhanced VPC routing enabled and public accessibility turned off.

Amazon Redshift Network and security section with enhanced VPC routing turned on and public access turned off

Figure 2: Enable enhanced VPC routing in Amazon Redshift

Note: Amazon Redshift restarts the cluster automatically when you change enhanced VPC routing. Make this change during a maintenance window.

Step 2: Verify the DNS attributes on your VPC

Private DNS is what redirects the public AWS service hostnames to your interface endpoints, and it depends on two VPC attributes. Follow these steps:

  1. Navigate to Amazon Redshift and choose the Properties tab for Amazon Redshift provisioned, or the Data access tab for Amazon Redshift Serverless.
  2. Under Network and security setting, choose the associated VPC.
  3. Your VPC details open in a new browser tab.
  4. Review the Details section, where the attributes appear as DNS hostnames and DNS resolution. Make sure that both properties are set to Enabled. The following screenshot shows the VPC Details page with both DNS attributes set to Enabled.
VPC Details page showing DNS hostnames and DNS resolution both set to Enabled

Figure 3: DNS hostnames and DNS resolution enabled on the VPC Details page

  1. If either of the properties is Disabled, choose Actions, choose Edit VPC settings, select Enable on the attribute you need, and choose Save. The following screenshot shows the Edit VPC settings page where you enable these DNS attributes.
Edit VPC settings page with the DNS hostnames and DNS resolution attributes being enabled

Figure 4: Enable DNS hostnames and DNS resolution

Step 3: Create the interface VPC endpoints for IAM Identity Center authentication

Create the two interface endpoints that the authentication flow needs. Each corresponds to one of the two IAM Identity Center calls in the authentication flow described earlier:

Service endpoint Used for
com.amazonaws.<region>.sso-oauth Validating and exchanging the IAM Identity Center access token
com.amazonaws.<region>.identitystore Resolving the user and their group membership

To create an interface endpoint for an AWS service

  1. Open the Amazon Virtual Private Cloud (Amazon VPC) console at https://console.aws.amazon.com/vpc/.
  2. In the navigation pane, choose Endpoints.
  3. Choose Create endpoint.
  4. For Type, choose AWS services.
  5. IAM Identity Center is a Regional service, so these endpoints must reach the AWS Region where your IAM Identity Center instance is available. If you’re using IAM Identity Center multi-Region replication (your instance is replicated to the Region where your Amazon Redshift cluster runs), leave Enable Cross Region endpoint unchecked.
  6. For Service name, search for sso-oauth and select the service for your Region (com.amazonaws.<region>.sso-oauth). The following screenshot shows the top section of the Create endpoint page with the sso-oauth service selected.
Create endpoint page with the sso-oauth service selected for the Region

Figure 5: Create an interface VPC endpoint, part 1

  1. For VPC, select the VPC from which you will access the AWS service. In our use case, we choose the Amazon Redshift VPC.
  2. To enable private DNS support, select Additional settings and choose Enable private DNS name.
  3. For Subnets, select the subnets in which to create endpoint network interfaces. You can select one subnet per Availability Zone. You can’t select multiple subnets from the same Availability Zone. For more information, see Subnets and Availability Zones.
  4. For IP address type, choose IPv4. This assigns IPv4 addresses to the endpoint network interfaces. This option is supported only if all selected subnets have IPv4 address ranges and the service accepts IPv4 requests.
  5. For Security groups, select the security groups to associate with the endpoint network interfaces. For this post, we have selected default security group associated with Redshift. The following screenshot shows the VPC, subnet, and security group selections for the endpoint.
Create endpoint page showing the VPC, subnet, and security group selections

Figure 6: Create an interface VPC endpoint, part 2

  1. For Policy, to allow all operations by all principals on all resources over the interface endpoint, select Full access. To restrict access, select Custom and enter a policy. This option is available only if the service supports VPC endpoint policies. For more information, see Endpoint policies.
  2. (Optional) To add a tag, choose Add new tag and enter the tag key and the tag value.
  3. Choose Create endpoint. The following screenshot shows the policy and tag settings before you create the endpoint.
Create endpoint page showing the policy set to Full access and the tag settings

Figure 7: Create an interface VPC endpoint, part 3

Repeat steps 1–14 for the identity store endpoint, search for identitystore and select the service for your Region (com.amazonaws.<region>.identitystore).

Two settings in the preceding steps are important:

  • Enable private DNS name is required. Amazon Redshift resolves the public service hostname, for example, oidc.<region>.amazonaws.com. Private DNS is what points that hostname at your interface endpoint, so the traffic stays inside your VPC.
  • Use the cluster’s security group, because the cluster is the caller. The endpoint’s security group must allow inbound HTTPS on port 443 from the cluster. Reusing the cluster’s own security group is the simplest approach when it already allows traffic from itself. A dedicated security group needs an explicit port 443 inbound rule from the cluster’s security group.

(Optional) To create an interface endpoint using the command line

Step 4 (optional): Create endpoints for AWS Glue and AWS Lake Formation

Complete this step only if your cluster queries external data through the AWS Glue Data Catalog and AWS Lake Formation. Common examples include Amazon S3 Tables, a capability of Amazon S3, and data lakes registered with Lake Formation. If you only need single sign-on, you can skip to Step 5. Amazon Redshift calls the AWS Glue Data Catalog to enumerate databases and tables, and calls AWS Lake Formation to check permissions and vend temporary credentials for the underlying data. Like the authentication calls, these are made by the cluster, so with enhanced VPC routing enabled they travel through your VPC and need a path of their own.

Repeat steps 1–14 from Step 3 for:

  • com.amazonaws.<region>.glue.
  • com.amazonaws.<region>.lakeformation.

With these endpoints in place, Amazon Redshift routes external catalog operations such as listing external tables through the VPC endpoints rather than the public internet, keeping metadata traffic on the AWS network.

Step 5: Create an Amazon S3 gateway endpoint

With enhanced VPC routing enabled, anything the cluster does against Amazon S3 (COPY, UNLOAD, and Amazon S3 Tables) also travels through your VPC. Create a gateway endpoint and associate it with the route table(s) used by your cluster’s subnets:

  1. Open the Amazon VPC console at https://console.aws.amazon.com/vpc/.
  2. In the navigation pane, choose Endpoints, then choose Create endpoint.
  3. For Type, choose AWS services.
  4. For Service name, search for s3 and select the service for your Region with Type: Gateway (com.amazonaws.<region>.s3). The following screenshot shows the Create endpoint page with the Amazon S3 gateway service selected.
Create endpoint page with the Amazon S3 gateway service selected

Figure 8: Create an Amazon S3 gateway endpoint, part 1

  1. For VPC, choose your Amazon Redshift VPC.
  2. For Route tables, select the route table(s) associated with the subnets your cluster runs in.
  3. Choose Create endpoint. The following screenshot shows the VPC and route table selections for the S3 gateway endpoint.
Create endpoint page showing the VPC and route table selections for the S3 gateway endpoint

Figure 9: Create an Amazon S3 gateway endpoint, part 2

Step 6: Validate the endpoints

Confirm in the Amazon VPC console that every endpoint you created is available, and that private DNS is enabled on the interface endpoints.

  1. Open the Amazon VPC console at https://console.aws.amazon.com/vpc/.
  2. In the navigation pane, choose Endpoints.
  3. In the endpoints list, use the filter bar to filter by VPC ID (choose VPC ID and select your Amazon Redshift VPC). Then locate the endpoints you created for this walkthrough, sso-oauth, identitystore, the Amazon S3 gateway endpoint, and (if you created them) glue and lakeformation.
  4. Confirm each endpoint shows a Status of Available.
  5. Select each interface endpoint (sso-oauth, identitystore, glue, lakeformation) and, on the Details tab, confirm Private DNS names enabled is Yes. The following screenshot shows the completed endpoints list with each endpoint in the Available state.
VPC endpoints list showing the interface and gateway endpoints in the Available state

Figure 10: VPC endpoints created in this walkthrough, in the Available state

Step 7: Test single sign-on with Amazon Redshift Query Editor V2

  1. On the Amazon Redshift console, choose Query editor v2.
  2. Choose your cluster and then choose IAM Identity Center as the connection method.
  3. Sign in with your corporate credentials when prompted.
  4. Expand the cluster in the tree view to list databases, schemas, and tables.

The database list populates within a few seconds. Confirm the login on the server side by querying the connection log. Run this as a user who does not use IAM Identity Center, for example a database user with a password, or through the Amazon Redshift Data API:

SELECT record_time, user_name, auth_method, driver_version, remote_host, event
FROM sys_connection_log
WHERE auth_method LIKE '%Idc%'
AND record_time > dateadd(minute, -15, getdate())
ORDER BY record_time DESC;

A successful sign-in shows user_name as <idc_namespace>:<[email protected]> with event of authenticated, which confirms that the identity was resolved through the endpoints you created. The following screenshot shows the sys_connection_log query results, where each IAM Identity Center sign-in appears with a user_name in the <idc_namespace>:<[email protected]> format.

Query Editor V2 connected through IAM Identity Center, showing the expanded database list

Figure 11: Query Editor V2 connected with IAM Identity Center, showing the database list

Step 8: Test single sign-on with a SQL client

Testing from a SQL client on an EC2 instance inside your VPC is the stronger validation, and we recommend doing both. Query Editor V2 connects through an Amazon Redshift managed proxy, so its connections are recorded with a loopback address. A client running inside your VPC connects to the cluster endpoint directly, which is exactly the path the endpoints you created are there to serve.

Set up SQL Workbench/J

SQL Workbench/J connects through the Amazon Redshift JDBC driver. On an EC2 instance in the same VPC as your cluster, download and install SQL Workbench/J.

  1. Download the latest Amazon Redshift JDBC driver together with its dependent libraries, and extract the archive to a folder on the instance.
  2. Start SQL Workbench/J, and choose File, then Manage Drivers.
  3. Choose the Create a new entry icon, and for Name, enter Amazon Redshift.
  4. For Library, choose the folder icon, and select the driver JAR file along with every JAR file in the dependent libraries folder. Keep only one version of the driver in the list, and remove any previous entries.
  5. Choose File, then Connect window, and choose the Create a new connection profile icon. Enter a name for the profile, such as redshift-idc.
  6. For Driver, choose the Amazon Redshift driver that you created.
  7. For URL, enter your cluster endpoint in the form jdbc:redshift://<cluster endpoint>:5439/<database>, for example jdbc:redshift://my-redshift-cluster.abc123xyz789.ca-central-1.redshift.amazonaws.com:5439/dev.
  8. Leave Username and Password empty. The browser plugin obtains the identity interactively.
  9. Choose Extended Properties, and add the following three properties:
Property Value
plugin_name com.amazon.redshift.plugin.BrowserIdcAuthPlugin
issuer_url https://identitycenter.amazonaws.com/ssoins-<instance-id>
idc_region The Region of your IAM Identity Center instance, such as ca-central-1
  1. Clear Separate connection per tab, so that each editor tab reuses the same physical connection rather than prompting you to sign in again.
  2. Choose Test. Your default browser opens. Sign in with your corporate credentials, and then choose Allow access so that the Amazon Redshift JDBC driver can access your data.
  3. If the connection succeeds, you see a prompt confirming the connection to your Amazon Redshift endpoint, as shown in the following screenshot.
SQL Workbench/J connection profile for Amazon Redshift using the IAM Identity Center browser plugin

Figure 12: SQL Workbench/J connection for Amazon Redshift using the IAM Identity Center browser plugin

In the browser, you will see the following message once the authentication is successful.

Congratulations! You have IAM Identity Center single sign-on working on an Amazon Redshift cluster with enhanced VPC routing enabled.

Step 9: Verify the calls on AWS CloudTrail

You can confirm from AWS CloudTrail that these calls travel through your interface endpoints rather than the internet. Each event includes a vpcEndpointId field naming the endpoint the call traversed, along with a vpcEndpointAccountId field identifying the account that owns it.

The following table maps each interface endpoint to the CloudTrail event you’ll see:

Service endpoint Event source CloudTrail event
com.amazonaws.<region>.sso-oauth sso-oauth.amazonaws.com CreateTokenWithIAM
com.amazonaws.<region>.identitystore identitystore.amazonaws.com DescribeUser, ListGroupMembershipsForMember, BatchDescribeGroup

The following screenshot shows the snippet from the CloudTrail logs showing the CreateTokenWithIAM event that Amazon Redshift generates when it exchanges the IAM Identity Center access token. The eventSource is sso-oauth.amazonaws.com, and the vpcEndpointId field confirms the call traversed your interface VPC endpoint rather than the public internet. The invokedBy field shows the call originated from Amazon Redshift (redshift.amazonaws.com), not from the client.

CloudTrail CreateTokenWithIAM event with event source sso-oauth.amazonaws.com and a vpcEndpointId field

Figure 13: CloudTrail CreateTokenWithIAM event traversing the sso-oauth interface endpoint

Similarly, the following screenshot shows a DescribeUser event (event source identitystore.amazonaws.com) generated when Amazon Redshift resolves the authenticated user against the identity store. As with the previous event, the invokedBy field shows the call originated from Amazon Redshift, and the vpcEndpointId field confirms it traversed the identitystore interface endpoint.

CloudTrail DescribeUser event with event source identitystore.amazonaws.com and a vpcEndpointId field

Figure 14: CloudTrail DescribeUser event traversing the identitystore interface endpoint

Note: where the events appear depends on how your IAM Identity Center instance is deployed:

  • CreateTokenWithIAM (event source sso-oauth.amazonaws.com) is recorded in the same account as your Amazon Redshift cluster.
  • Identity Store API calls (DescribeUser, ListGroupMembershipsForMember, BatchDescribeGroup) are recorded in the account that owns your IAM Identity Center instance. The event source is identitystore.amazonaws.com. If you use a centralized instance in a delegated administrator or management account, these events appear in that account and not in the account running your cluster. Searching the cluster’s own account returns nothing, even when authentication is working normally. To confirm which account to look in, run aws sso-admin list-instances and check OwnerAccountId.

Clean up

To avoid incurring future charges, delete the resources you created for this walkthrough. These endpoints provide the network path for single sign-on while enhanced VPC routing is enabled, so remove them only if you no longer need the integration.

  • On the Amazon VPC console, choose Endpoints.
  • Select the sso-oauth and identitystore interface endpoints you created, and choose Actions, then Delete VPC endpoints.
  • Select the glue and lakeformation interface endpoints, if you created them, and delete them.
  • Select the Amazon S3 gateway endpoint and delete it. This also removes its route table entries.
  • Terminate the EC2 instance you used to test the SQL client connection, if you created one for this walkthrough.
  • If you no longer need the integration, remove the IAM Identity Center application assignment for Amazon Redshift and delete the associated IAM role and policy.

Conclusion

In this post, we showed you how to enable AWS IAM Identity Center authentication for Amazon Redshift on clusters with enhanced VPC routing enabled. Your users get single sign-on with their corporate credentials, and the authentication traffic stays private to your VPC. The key concept is that Amazon Redshift, not your client, validates the access token. Because enhanced VPC routing is enabled, Amazon Redshift routes that validation call through your VPC. On a cluster running patch 204 or later, interface endpoints for sso-oauth and identitystore give Amazon Redshift a private path over AWS PrivateLink. Adding endpoints for AWS Glue, AWS Lake Formation, and Amazon S3 extends the same benefit to data lake and lakehouse queries.

Try this setup in your own environment and let us know what you think in the comments. For more information, see the following resources:


About the authors

Maneesh Sharma

Maneesh Sharma

Maneesh is a Senior Analytics Specialist Solutions Architect at AWS with more than 15 years of experience designing and implementing large-scale data warehouse and analytics solutions. He works with FSI and Enterprise customers to implement modern analytics architectures using Amazon Redshift, Amazon SageMaker Unified Studio, Amazon S3 Tables, AWS Glue, AWS Lake Formation, and AWS IAM Identity Center.

Laura Reith

Laura Reith

Laura is an Identity Solutions Architect at AWS, where she thrives on helping customers overcome security and identity challenges. In her free time, she enjoys wreck diving and traveling around the world.

Suchintya Dandapat

Suchintya Dandapat

Suchintya is a Principal Product Manager for AWS where he partners with enterprise customers to solve their toughest identity challenges, enabling secure operations at global scale.

Jonathan Glaser

Jonathan is a Software Development Engineer on the Amazon Redshift Connectivity team, where he works on authentication and the Redshift client drivers. He focuses on secure authentication for Redshift, including its integration with IAM Identity Center in Enhanced VPC Routing environments. Jonathan holds master’s degrees in biotechnology and computer science, and in his spare time enjoys reading fiction and exploring NYC’s food scene.

Nishtha Mehrotra

Nishtha is a Senior Software Development Engineer on the Redshift Connectivity team at AWS. With over 10 years of software engineering experience, she specializes in database driver development, performance optimization, and identity integration. Nishtha works on Amazon Redshift’s ODBC, JDBC, and Python drivers, ensuring reliable and performant connectivity for customers at scale. She is passionate about improving developer experience and building secure, high-performance data infrastructure that powers analytics workloads across AWS.

Automate IAM Identity Center governance with continuous discovery and reporting

Post Syndicated from Jonathan Nguyen original https://aws.amazon.com/blogs/security/automate-iam-identity-center-governance-with-continuous-discovery-and-reporting/

AWS IAM Identity Center integrates with external identity provider (IdP) to provide customers with a centralized authentication and authorization solution for AWS resources across AWS Organizations. AWS continues to invest into IAM Identity Center with a growing number of AWS services that natively integrate with IAM Identity Center. As your AWS organization scales, maintaining visibility into who has access to which applications and enforcing governance policies across accounts and Regions becomes increasingly complex. Identity Center helps address this by centralizing authentication and authorization for AWS resources across your organization, integrating with your external identity provider and a growing number of AWS services. However, as adoption scales, tracking access assignments and enforcing governance policies consistently becomes its own challenge.

This blog post focuses on planning your integration between an identity provider and IAM Identity Center for managed applications in your organization. We also walk through deploying and using an automated Identity Center discovery and reporting sample solution to help answer the governance and security questions:

  1. Which users or groups have access to which AWS applications?
  2. Who last accessed a specific AWS application and when?
  3. Which users and groups are assigned to which IAM Identity Center applications across organization and AWS Regions?
  4. How can you quickly generate reports to assist with compliance audits or security reviews?

The sample solution will identify associated AWS applications and the corresponding user and group assignments for the IAM Identity Center instances within your organization. The output is stored in a queryable format and generates CSV files for downstream analysis or reporting.

Plan identity governance for Identity Center application assignments

There are four key areas to start on when planning how to manage delegation and provisioning access across IAM Identity Center managed AWS applications. Bring together key stakeholders across security, governance, application, and business teams to make sure the implementation and integration will fit into the overall identity governance strategy.

  1. Who can provision managed AWS applications: You can implement the IAM restrictions for creation of new AWS resources within AWS accounts in your organization. For example, if you restrict provisioning into a production AWS account to only infrastructure as code (IaC) IAM roles, you would continue implementing restrictions using AWS identity policies, service control policies (SCP), resource control policies (RCP), or IaC policy evaluation tools like Open Policy Agent (OPA) or Checkov.
  2. Who manages user and group assignments: The managed application administrator handles authorization to managed applications within an AWS account. It’s recommended to clearly define roles and responsibilities across the workflow. You would have an IaC pipeline manage the integrated AWS resource provisioning with IAM Identity Center, then another workflow to allow requests to manage user and group membership for the managed application.
  3. How authentication flows from the IdP to AWS resources: Users will authenticate into Identity Center, then be authorized to access AWS managed applications. From there, they will be authorized to access the associated AWS service and resources tied to the managed application. Depending on the AWS service, the associated downstream resources might have their own IAM principals that the users can access.
  4. Mapping IdP identities to AWS resource access: There needs to be a link for workforce users and groups in your IdP, to Identity Center managed applications, and to downstream resources and permissions. Identifying the relationship will help you understand access within your AWS environment. Trusted identity propagation (TIP) is an additional feature of Identity Center that provides an end to end trail of the identity to the downstream service.

Create and manage an Identity Center application assignment lifeycle

As a security best practice, you should enable delegated administration when managing Identity Center within an AWS organization instances.

After you have IAM Identity Center set up within an organization instance, your member AWS accounts can start creating associated AWS resources. Within each member AWS account, the IAM principals that provision AWS resources will need two types of service-specific IAM permissions:

  • The first type of IAM permissions will be specific to the AWS service you want to provision. For example, to create an Amazon SageMaker AI domain, you would need the same IAM permissions to create the SageMaker AI domain and the downstream AWS resources SageMaker AI might use.
  • The second type of IAM permissions is specific to IAM Identity Center. The IAM principal used to create the resource, in this example SageMaker AI, will also need permissions to manage applications within the Identity Center instance.
{
	"Version": "2012-10-17",
	"Statement":
	[
		{
            "Effect": "Allow",
            "Action": [
                "sso:CreateManagedApplicationInstance",
                "sso:GetManagedApplicationInstance",
                "sso:DeleteManagedApplicationInstance",
                "sso:DescribeRegisteredRegions"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "sso:CreateApplication",
                "sso:DescribeApplication",
                "sso:DeleteApplication",
                "sso:PutApplicationGrant",
                "sso:PutApplicationAuthenticationMethod",
                "sso:PutApplicationAccessScope"
            ],
            "Resource": 
            [
                "arn:aws:sso::<INSERT-ACCOUNT-ID>:application/ssoins-<INSERT-INSTANCE-ID>/apl-*"
            ]
        }
    ]
}

IAM Identity Center application Amazon Resource Names (ARNs) follow a different standard naming convention that isn’t based on the original resource name that was provided during resource creation. For example, when a user creates an Amazon Simple Storage Service (Amazon S3) bucket and sets a specific bucket name, that bucket name is included in the ARN: arn:[partition]:s3:::[bucket-name]. Identity Center application ARNs use unique identifiers (GUIDs) generated at creation time.

Manage access for an Identity Center application

After the IAM Identity Center application is created, you will need to manage access to the Identity Center application and associated AWS resources. To continue with the SageMaker AI domain example, after the domain is created, an authorized IAM principal will need to assign Identity Center users or groups from the Identity Center instance to the domain. For Identity Center, you will need two types of Identity Center IAM permissions.

The first type of IAM permissions is used to list IAM Identity Center users and groups within the Identity Center instance. This is needed to read and select specific IAM users or groups to assign to an Identity Center application.

{
    "Version": "2012-10-17",
    "Statement":
    [
        {
            "Sid": "ListIdentityCenterUsers",
            "Effect": "Allow",
            "Action":
            [
                "identitystore:ListUsers",
                "identitystore:DescribeUser",
                "identitystore:ListGroups",
                "identitystore:DescribeGroup",
                "identitystore:ListGroupMemberships"
            ],
            "Resource": "*"
        }
    ]
}

Although IAM Identity Center users and groups have a GUID, the GUIDs aren’t clearly linked to the resource friendly names. For example, a group name could be Read-Only and the resource GUID could be 1234567890-abcdef12-3456-7890-abcd-ef1234567890 in the identity store. Additionally, the IAM actions to list users or groups require the AllUsers or AllGroups parameter. Because List actions require access to users and groups, a restrictive IAM policy can’t be used to prevent IAM principals from seeing a subset of users or groups within the identity store. The second type of IAM permission is used to create and manage application assignments for the Identity Center application within the Identity Center instance.

{
    "Version": "2012-10-17",
    "Statement":
    [
        {
            "Sid": "ManageApplicationAssignments",
            "Effect": "Allow",
            "Action": 
            [
                "sso:CreateApplicationAssignment",
                "sso:DeleteApplicationAssignment",
                "sso:ListApplicationAssignments",
                "sso:PutApplicationAssignmentConfiguration"
            ],
            "Resource":
            [
                "arn:aws:sso::<INSERT-ACCOUNT-ID>:application/ssoins-<INSERT-INSTANCE-ID>/apl-*"
            ]
        }
    ]
}

Because the IAM Identity Center application ARN is created using a unique application ID during creation, it’s not recommended to implement an IAM policy restricting authorized IAM principals to manage specific Identity Center applications. For example, to limit the application assignments to only a specific set of applications, you would need to:

  1. Create the AWS resource with IAM Identity Center as the authentication mechanism
  2. Query the Identity Center application ARN for the associated AWS resource
  3. Identify the IAM principal that will be used for application assignments
  4. Create or update an IAM policy associated to that IAM principal to allow application assignments for that specific application
  5. Create or update an SCP to restrict application assignment to that specific IAM principal

In lieu of implementing resource restrictions within identity policies, you should limit management of IAM Identity Center application and application assignments to a limited number of authorized IAM principals. In addition, it is recommended to implement detective and reactive capabilities to manage Identity Center application assignments.

Plan your naming conventions and automation strategy

IAM Identity Center provides several APIs to capture information about your AWS organization instances, applications, and assignments. Before implementing automation or guardrails, you should develop a methodical approach and understand what outcome you’re working backwards from. Start by defining naming conventions and deciding what parts of the workflow you want to centralize.

  1. Determine a naming convention for groups within your IdP: For example: AWS_<ACCT#>_<AWS_Service>_<LOB>_<ENV>_<AppName>. The IdP group name would look like: AWS_123412341234_SageMaker_Data_PROD_GTLabel.
  2. Define the naming convention for AWS resources for your Identity Center integrated applications: For example: <AWS_Service>_<LOB>_<AppName>. The AWS resource name would look like: SageMaker_Data_GTLabel.
  3. Define the naming convention for Identity Center application names: For example: <AWS_Service>_<LOB>_<ENV>_<AppName>. The Identity Center application name would look like: SageMaker_Data_PROD_GTLabel.
  4. Decide on the restrictions that you want to implement within your AWS environment. Depending on your enterprise’s security standard, you can implement specific restrictions based on mapping of a similar combination of ENV (environment), AWS service, LOB (line of business), or application name.
  5. Choose the portions of the application workflow that you want to centralize. This could include creating the application, making application assignments, or remediating issues.

As more configurations and permissions are centralized, additional overhead and bottlenecks can be introduced. It’s important to find the right balance for your enterprise. For example, if you centralize application assignments, each application team will need to submit a request to modify assignments that will be reviewed by a centralized team and could result in a delayed response. Conversely, if each application team handles their own assignments, there’s a risk that application assignments won’t align to enterprise security standards.

By understanding your goals and how you want to reach them, you can tailor the sample solution accordingly. Getting alignment on this requires planning and coordination across multiple teams within your organization. When thinking about more customized authorization logic—such as using provisioned AWS resource metadata—you should review how the specific AWS service integrates with IAM Identity Center managed applications. For example, if you want to find the Identity Center application ARN for a specific AWS resource, such as a SageMaker AI domain, use the following approach. A reverse lookup is necessary because AWS services create Identity Center applications with GUID-based ARNs that aren’t easily discoverable.

#!/bin/bash

DOMAIN_ID="d-xxxxxxxxxxxx"

REGION="xx-xxxx-x"

# Step 1: Get SageMaker domain details
echo "=== SageMaker Domain Details ==="
DOMAIN_INFO=$(aws sagemaker describe-domain \
--region $REGION \
--domain-id $DOMAIN_ID)

# Step 2: Extract Identity Center application ARN
SSO_APP_ARN=$(echo $DOMAIN_INFO | jq -r '.SingleSignOnApplicationArn')
echo "Identity Center App ARN: $SSO_APP_ARN"

IAM Identity Center automation sample solutions

The sample-iam-idc-application-discovery-reporting solution hosted on GitHub consists of two separate AWS CDK stacks:

  1. IAM Identity Center governance reporting stack (/identity-center-reporting directory) – Provides automated discovery and report generation (using CSV files)
  2. IAM Identity Center remediation stack (/identity-center-remediation directory) – Provides real-time enforcement and notifications

The recommendation is to deploy the reporting stack first to establish baseline visibility, then deploy the remediation stack for enforcement.

The following diagram depicts that IAM Identity Center governance architecture.

The reporting sample deploys the following resources:

  1. Amazon EventBridge – Rule invokes the discovery workflow daily at 2:00 AM UTC (configurable)
  2. AWS Step Functions – Orchestrates the multi-stage discovery workflow across instances, applications,and assignments
  3. AWS Lambda – Takes the following actions:
    1. Discovers IAM Identity Center instances across the organization and member accounts
    2. Application discovery that enumerates the applications configured in each Identity Center instance
    3. Assignment discovery maps users and groups to applications, resolving friendly names from the Identity Store
  4. Amazon DynamoDB – Stores the discovered instances, applications, and assignments, encrypted with an AWS Key Management Service (AWS KMS) customer-managed key
  5. Amazon API Gateway – Provides an IAM-authenticated REST API for a Lambda function to generate and export reports as CSV files
  6. Amazon S3 – Stores the encrypted CSV file exports, with lifecycle policies and time-limited Amazon S3 presigned download URLs

Deploy the IAM Identity Center reporting sample

The following procedure deploys the automated discovery and reporting infrastructure using AWS Cloud Development Kit (AWS CDK). Make sure you have the following prerequisites in place, then continue with the steps to set up the solution.

Prerequisites

You need to have the following to test the solution in this post.

  1. An AWS organization with an IAM Identity Center organization instance with delegated administrator access configured
  2. IAM Identity Center configured with at least one instance
  3. AWS Command Line Interface (AWS CLI) configured with appropriate credentials
  4. Python 3.12 & Node.js 18 or later installed for CDK deployment

To deploy the IAM Identity Center reporting solution, run the following commands:

  1. Clone the solution repository:
    git clone https://github.com/aws-samples/sample-iam-idc-application-discovery-reporting
    cd identity-center-reporting

  2. Install dependencies:
    python3.12 -m venv .venv && source .venv/bin/activate
    pip install -r requirements.txt

  3. Bootstrap the CDK (if not already done):
    cdk bootstrap aws://<INSERT-ACCOUNT-ID>/<INSERT-REGION>

  4. Deploy the sample solution:
    export IDC_EXTERNAL_ID="$(uuidgen)" # alternatively you can set this value — member-account roles need the same value
    
    cdk deploy --parameters AllowedIpRange=10.0.0.0/8 --parameters CrossAccountExternalId="$IDC_EXTERNAL_ID"

    Note: AllowedIPRange is optional but recommended as a security best practice. The parameter will add a network restriction to download the Amazon S3 presigned URL export.

  5. Optional: For AWS account-level Identity Center instance discovery, a cross-account IAM role is required.
    python scripts/deploy-cross-account-roles.py --external-id "$IDC_EXTERNAL_ID"

Figure 2: Successful AWS CDK deployment of the reporting stack

Figure 2: Successful AWS CDK deployment of the reporting stack

After the stack is successfully deployed, obtain the CDK output values for the API Gateway URL and S3 bucket name. If using a command line to deploy, these values will be displayed after the stack successfully deploys. It can also be found in the AWS Management Console as AWS CloudFormation stack output. The output will be used for generating reports in the following sections.

Note that this stack is for the reporting stack only. Reactive monitoring and deployment are described in the next section.

After the reporting stack is successfully deployed, the automation will run on a daily schedule. The first discovery run executes immediately after deployment. You can monitor discovery execution history and detailed logs through the the AWS Step Functions console. Review the detailed Lambda function logs in Amazon CloudWatch Logs. Query discovered instances, applications, and assignments through the DynamoDB console for one-time analysis.

Generate reports for Identity Center application assignments

To generate on-demand reports as CSV files from the REST API:

  1. Set env variables for Sigv4 authentication
      export AWS_REGION="<REPLACE-REGION>"
      export API_ID="<REPLACE-API-ID>"
      eval "$(aws configure export-credentials --profile "<YOUR-PROFILE>" --format env)"

  2. Export applications
      curl -sS --fail-with-body \
        --aws-sigv4 "aws:amz:${AWS_REGION}:execute-api" \
        --user "${AWS_ACCESS_KEY_ID}:${AWS_SECRET_ACCESS_KEY}" \
        --header "x-amz-security-token: ${AWS_SESSION_TOKEN}" \
        "https://${API_ID}.execute-api.${AWS_REGION}.amazonaws.com/prod/export/applications" \
        -o applications.json

  3. Export assignments with user and group names
      curl -sS --fail-with-body \
        --aws-sigv4 "aws:amz:${AWS_REGION}:execute-api" \
        --user "${AWS_ACCESS_KEY_ID}:${AWS_SECRET_ACCESS_KEY}" \
        --header "x-amz-security-token: ${AWS_SESSION_TOKEN}" \
        "https://${API_ID}.execute-api.${AWS_REGION}.amazonaws.com/prod/export/assignments" \
        -o assignments.json

  4. The API returns a JSON response with a presigned Amazon S3 URL that’s valid for 15 minutes:
    {
        "message": "CSV export generated successfully",
        "download_url": "https://<bucket>.s3.amazonaws.com/exports/applications/2026/06/22/applications_export_20260722_184538.csv?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=900&...",
        "filename": "applications_export_20260722_184538.csv",
        "s3_key": "exports/applications/2026/07/22/applications_export_20260722_184538.csv",
        "file_size_bytes": 6514,
        "export_type": "applications",
        "generated_at": "2026-07-22T18:45:38Z",
        "expires_at": "2026-07-22T19:00:38Z",
        "request_id": "a1b2c3d4-...."
    }

    {
        "message": "CSV export generated successfully",
        "download_url": "https://<bucket>.s3.amazonaws.com/exports/applications/2026/07/22/applications_export_20260722_184538.csv?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=900&...",
        "filename": "applications_export_20260722_184538.csv",
        "s3_key": "exports/applications/2026/07/22/applications_export_20260722_184538.csv",
        "file_size_bytes": 6514,
        "export_type": "applications",
        "generated_at": "2026-07-22T18:45:38Z",
        "expires_at": "2026-07-22T19:00:38Z",
        "request_id": "a1b2c3d4-...."
    }

The generated CSV files include enriched data with friendly names:

Instance ARN Account ID Application name Principal type Principal name Status
arn:aws:sso:::instance/… 123456789012 SageMaker_PROD GROUP Engineering-Team-Dev ACTIVE
arn:aws:sso:::instance/… 123456789012 OpenSearch_PROD USER [email protected] ACTIVE

You can use the generated CSV files to help identify anomalies or non-compliant assignments, such as:

  1. Each PROD application should only have GROUP assignments. OpenSearch_PROD has a USER principal type and so is non-compliant.
  2. Each PROD application should only allow PROD groups assigned. SageMaker_PROD has a DEV group name (Engineering-Team-Dev) assigned and so is non-compliant.

Based on the testing and analysis of the output from the IAM Identity Center governance reporting sample solution, it’s important to start thinking about what restrictions to put in place for application assignments. It’s also important to conduct this exercise before taking action within the Identity Center remediation sample solution in the next section.

IAM Identity Center remediation

The following diagram shows the IAM Identity Center remediation architecture.

The IAM Identity Center remediation sample solution deploys the following resources:

  1. Amazon EventBridge – Matches IAM Identity Center assignment and profile events from CloudTrail (sso.amazonaws.com) and invokes the monitor function across the following IAM actions:
    1. CreateApplicationAssignment
    2. DeleteApplicationAssignment
    3. PutApplicationAssignmentConfiguration
    4. AssociateProfile
    5. DisassociateProfile
    6. CreateProfile
    7. UpdateProfile
    8. DeleteProfile
  2. Lambda – Resolves the application and group names, validates the assignment against your naming convention, and notifies or remediates based on the configured mode
  3. Amazon Simple Notification Service (Amazon SNS) – Publishes alerts for non-compliant assignments to subscribers (for example, email)
  4. Amazon Simple Queue Service (Amazon SQS) – Captures events the Lambda function fails to process for later inspection
  5. AWS KMS – Customer-managed key to encrypt the Lambda environment variables, CloudWatch logs, SNS topic, and dead-letter queue
  6. Amazon CloudWatch – Log group stores the function’s structured, encrypted logs as an audit trail

Flexible naming policies support regex-based pattern matching for specific organizational requirements. The automation actions are logged to CloudWatch with structured JSON for additional analysis and reporting.

The following procedure deploys the remediation infrastructure using AWS Cloud Development Kit (AWS CDK). Make sure you have the following prerequisites in place, then continue with the steps to set up the solution.

Prerequisites

You need the following to run the remediation solution:

  1. An AWS organization with an IAM Identity Center organization instance with delegated administrator access configured
  2. IAM Identity Center configured with at least one instance and an IdP
  3. Access to create groups within the integrated IdP
  4. AWS Command Line Interface (AWS CLI) configured with appropriate credentials
  5. Python 3.12 & Node.js 18 or later installed for CDK deployment

Provide your IAM instance ARN and the account ID where IAM Identity Center is administered:

git clone https://github.com/aws-samples/sample-iam-idc-application-discovery-reporting # only needed if you did not clone in the previous reporting section
cd identity-center-remediation
cdk deploy --context enableAutoDeletion=false --parameters IdentityCenterInstanceArn=arn:aws:sso:::instance/ssoins-<INSERT-ORG-INSTANCE-ID> --parameters ManagementAccountId=<INSERT-MANAGEMENT-ACCOUNT>

Note: If you don’t pass a parameter for GroupNameRegex, the default action of the sample solution is to verify the group name appears as a whole word in the application name: Case-insensitive, splitting on -, _, and spaces, so ReadOnly matches sagemaker_readonly but read does not. If different validation is needed, the sample can be deployed with the regex value for GroupNameRegex.

After the solution is deployed, we will walk through testing both a compliant and non-compliant application assignment.

Gather Identity Center and application information

For this blog, we have already created two groups within the IdP that is integrated into an IAM Identity Center instance. We also already created two applications within Identity Center instance to use. Next, we’ll need to gather information specific to the environment to run through each example.

  1. Obtain the IAM Identity Center instance ARN and set the value.
    INSTANCE_ARN=$(aws sso-admin list-instances --region <REPLACE-REGION> --query "Instances[0].InstanceArn" --output text)
    
    echo "$INSTANCE_ARN"

  2. Obtain the IAM Identity Center identity store ID

    IDENTITY_STORE_ID=$(aws sso-admin list-instances --region <REPLACE-REGION> --query "Instances[0].IdentityStoreId" --output text)
    
    echo "$IDENTITY_STORE_ID"

  3. Get existing groups in IAM Identity Center
    aws identitystore list-groups --identity-store-id $IDENTITY_STORE_ID --query "Groups[].{Name:DisplayName,Id:GroupId}" --output table

  4. Get existing enabled applications in IAM Identity Center
    aws sso-admin list-applications --instance-arn $INSTANCE_ARN --query "Applications[?Status=='ENABLED'].{Name:Name,ARN:ApplicationArn}" --output table

After you have the output for IAM Identity Center groups and applications, select two groups and one application that you want to test with. You will need to set additional variables for each group GUID and application ARN. In this example, I select the following two groups (ReadOnly and Developer) for testing and set the environment variables using export:

  1. Group #1 Name: ReadOnly
    export GRP_READONLY=abc12345-1234-1234-1234-abcdef123456
    export GRP_DEVELOPER=abc12345-1234-1234-1234-abcdef123457
    export APP_READONLY="arn:aws:sso::<INSERT-ACCOUNT-ID>:application/<INSERT-INSTANCE-ARN>/<INSERT-APPLICATION-ARN>"

    • Group #2 Name: Developer
    • Application Name: sagemaker_readonly

    As part of this validation, the sample solution verifies the group name appears as a whole word in the application name: Case-insensitive, splitting on the -, _, characters and spaces, so ReadOnly matches sagemaker_readonly but read does not. For different use-cases, The GroupNameRegex parameter can be used during deployment.

    Test compliant and non-compliant assignments

    Run the following command to add the ReadOnly group assignment to the sagemaker_readonly application:

    aws sso-admin create-application-assignment --application-arn $APP_READONLY --principal-id $GRP_READONLY --principal-type GROUP

    The group assignment request meets the validation criteria because the application name sagemaker_readonly contains the group name ReadOnly. The output logs for this validation exist within the associated lambda function CloudWatch log group /aws/lambda/identity-center-app-monitor”.

    In this example, the logs will show:

    ✓ COMPLIANT - Group name found in application name

    applicationName="sagemaker_readonly” groupName="ReadOnly”

    Remediation action determined: NONE

    Run the following command to try to add the Developer group assignment to the sagemaker_readonly application:

    aws sso-admin create-application-assignment --application-arn $APP_READONLY --principal-id $GRP_DEVELOPER --principal-type GROUP

    The group assignment request doesn’t meet the validation criteria because the application name sagemaker_readonly doesn’t contain the group name Developer. The output logs for this validation exists within the associated lambda function CloudWatch log group /aws/lambda/identity-center-app-monitor. Note that the remediation action listed shows NOTIFICATION_ONLY, meaning it only sent a notification to the configured SNS topic and did not take action. If you want the group assignment to be deleted, the value should be set to enableAutoDeletion=true.

    In this example, the logs will show:

    ✗ NON-COMPLIANT - Group name not found in application name

    applicationName="sagemaker_readonly” groupName="Developer”

    Remediation action determined: NOTIFICATION_ONLY

    SNS notification sent successfully

    The SNS message will look like:

    {
    	"eventType": "NON_COMPLIANT_ASSIGNMENT",
    	"applicationName": "sagemaker_readonly",
    	"groupName": "Developer",
        "action": "NOTIFICATION_ONLY",
        "status": "SUCCESS",
        "applicationArn": "arn:aws:sso::1234:application/ssoins-1234/apl-1234",
        "groupId": "abc12345-1234-1234-1234-abcdef123457",
        "initiatedBy": { 
        	"type": "AssumedRole", 
        	"arn": "arn:aws:sts::1234:assumed-role/.../you" 
    	}
    }

    Scheduled reporting gives baseline visibility into IAM Identity Center managed applications. Event-driven monitoring can provide near real-time notification or enforcement. Together, these sample solutions can help align and scale Identity Center with your governance and security standards through both historical analysis and immediate response.

    Clean up

    For each deployed CDK stack, run the following commands in the AWS account where it was deployed.

    To delete the remediation stack, run the following commands:

    cd sample-iam-idc-application-discovery-reporting/identity-center-remediation
    cdk destroy

    To delete the reporting stack, run the following commands:

    cd sample-iam-idc-application-discovery-reporting/identity-center-reporting
    cdk destroy

    IAM governance automation at scale

    Achieving effective IAM Identity Center governance at scale requires moving beyond manual processes to automated, continuous monitoring and reporting. The following high-level steps can provide an Identity center governance framework:

    1. Deploy the sample automation with an IAM principal that has access in your delegated administrator account.
    2. Establish a baseline by running your first discovery and reviewing the generated reports.
    3. Configure naming policies to match your organization’s security conventions.
    4. Deploy the event-driven monitoring capabilities to enable real-time policy enforcement and automated response based on the security policies.
    5. Start in notification mode to establish a baseline before enabling auto-remediation.
    6. Integrate with your governance tools by connecting the API endpoints to your compliance dashboards or ITSM tools.
    7. Move to auto-remediation once you have validated policies are working as expected.

    Conclusion

    Managing AWS IAM Identity Center at scale doesn’t have to be a manual, time-consuming process. By implementing automated discovery and reporting combined with real-time event-driven monitoring, you can maintain continuous visibility into your organization’s identity and access landscape, respond immediately to policy violations, and enforce governance policies consistently across your organization. Automation reduces operational work, strengthens security, speeds up incident response, and maintains compliance. Start by deploying these solutions to gain visibility and enable real-time enforcement.

    If you have feedback about this post, submit comments in the Comments section below. If you have questions about this post, start a new thread on AWS re:Post or contact AWS Support.


    Author

    Jonathan Nguyen

    Jonathan is a Principal WWSO AI Security Solution Architect at AWS. He helps customers develop a comprehensive AI security strategy so they can deploy secure AI workloads at scale, integrate AI-powered security services, and defend against AI-powered threats.

    AWS Weekly Roundup: Price reduction of GPT models in Bedrock, CloudWatch managed collectors for Prometheus metrics, and more (August 3, 2026)

    Post Syndicated from Micah Walter original https://aws.amazon.com/blogs/aws/aws-weekly-roundup-price-reduction-of-gpt-models-in-bedrock-cloudwatch-managed-collectors-for-prometheus-metrics-and-more-august-3-2026/

    Last week I had the joy of participating in Amazon’s “Bring Your Kids to Work Day” with my 7 year old son. We commuted together into the New York City office, his first real rush hour train ride, and spent the day exploring how Amazon uses AI, machine learning, and robotics to deliver packages to customers all over the world. Watching his eyes light up as he saw robots navigating a fulfillment center reminded me why so many of us got into technology in the first place. There’s nothing quite like seeing that sense of wonder when something complex clicks.

    That same energy carried into the week’s launches. We’ve got updates across AI pricing, observability, multicloud networking, and data management. Let’s dive in.

    Headlines
    Amazon Bedrock announces up to 80% lower prices for OpenAI GPT‑5.6 models – If you’re using OpenAI’s GPT‑5.6 family through Amazon Bedrock, your costs just dropped significantly. Effective July 30, on-demand inference prices for GPT‑5.6 Luna are reduced by 80%, while GPT‑5.6 Terra prices are reduced by 20%. Luna now costs $0.20 per million input tokens and $1.20 per million output tokens, making it one of the most affordable frontier-class models available. These price reductions apply automatically — no action required on your part. Read more

    Last week’s launches
    Here are some launches and updates from this past week that caught my attention:

    • Amazon CloudWatch announces managed Prometheus collectors – Amazon CloudWatch now supports collecting Prometheus metrics from your AWS infrastructure using fully managed collectors, enabling you to monitor Amazon EKS, Amazon EC2, Amazon ECS, Amazon MSK, and Amazon OpenSearch Service workloads without deploying or managing any agents. If you’ve been maintaining your own Prometheus scraping infrastructure, this removes a significant operational burden. Read more
    • AWS Interconnect — multicloud connectivity with Oracle Cloud Infrastructure is now generally available – AWS Interconnect is the first purpose-built multicloud connectivity product of its kind, allowing you to quickly provision resilient, scalable private connections between AWS and other cloud providers. With this GA launch for Oracle Cloud Infrastructure (OCI), you can establish private cross-cloud networking without traversing the public internet, making it easier to run multicloud architectures with the security and performance your workloads demand. Read more
    • AWS IAM Identity Center extends multi-Region support to Identity Center directory – You can now replicate IAM Identity Center from your primary AWS Region to additional Regions when using the Identity Center directory as your identity source. If IAM Identity Center is affected by a disruption in the primary Region, your users continue to have access to their AWS accounts using provisioned entitlements in additional Regions. This feature was previously available only for instances connected to external identity providers. Read more
    • Amazon S3 Tables now supports the Variant data type for Apache Iceberg V3 – Amazon S3 Tables adds support for the Variant data type, introduced in the Apache Iceberg V3 table format specification. Variant provides a high-performance, native solution for managing semi-structured data within your data lake — think IoT sensor data, application logs, and other schema-flexible payloads — without resorting to JSON blobs. Read more

    Other AWS news
    Here are some additional posts and resources that you might find interesting:

    Upcoming AWS events
    Check your calendar and sign up for upcoming AWS events:

    • AWS Summits – AWS Summits are free events that bring the cloud and AI community together to connect, learn, and explore the latest technologies. Browse the full calendar to find a Summit near you in the second half of 2026.
    • AWS Community Days – Community-led conferences where content is planned, sourced, and delivered by community leaders.

    Join the AWS Builder Center to connect with builders, share solutions, and access content that supports your development. Browse here for upcoming AWS-led in-person and virtual events and developer-focused events.


    That’s all for this week. Check back next Monday for another Weekly Roundup!

    Multi-Region identity-based access to Amazon Redshift and S3 Tables

    Post Syndicated from Maneesh Sharma original https://aws.amazon.com/blogs/big-data/multi-region-identity-based-access-to-amazon-redshift-and-s3-tables/

    Organizations with lines of business operating across multiple AWS Regions increasingly run analytics workloads on globally distributed data. These organizations want to manage users and groups centrally, typically in the AWS Organizations management account and in a single Region, while still letting each line of business access data from the Region where its workloads run. Organizations should govern access based on the actual workforce user and their group memberships in the corporate directory.

    With multi-Region support for AWS IAM Identity Center, organizations can federate workforce identities into a single organization instance in their primary Region. After you replicate this instance to additional Regions, member accounts running services such as Amazon Redshift or Amazon Athena in those Regions can integrate with IAM Identity Center locally, to resolve the same centrally managed users and groups.

    This solution uses Trusted Identity Propagation (TIP), a capability that passes a user’s Identity Center identity and group memberships through a chain of AWS services. With TIP, when a user authenticates through Identity Center, that identity context flows to downstream services like AWS Lake Formation and Amazon S3 Access Grants. With this approach, you get consistent, identity-based access control without additional AWS Identity and Access Management (IAM) role configurations.

    In Part 1 of this series, we showed how to simplify enterprise data access using the Amazon Redshift integration with Amazon S3 Access Grants. We demonstrated how to grant Amazon Simple Storage Service (Amazon S3) permissions to AWS IAM Identity Center users and groups using S3 Access Grants, and tested the integration using a federated user to unload and load data between Amazon Redshift and Amazon S3 within a single AWS Region.

    In this post, we extend that solution across AWS Regions. We introduce a fictional company, AnyCompany Global, to illustrate how organizations with global operations can use AWS IAM Identity Center Multi-Region to set up consistent, identity-based access to Amazon Redshift and Amazon S3 Tables across Regions.

    Specifically, we demonstrate:

    • How IAM Identity Center Multi-Region replicates identity data so that the same users and groups are available in each enabled Region.
    • How AWS Lake Formation grants fine-grained table-level and column-level access to S3 Tables based on group membership.
    • How S3 Access Grants controls UNLOAD/COPY operations to Amazon S3 based on the same identity.

    We also show how to connect with your preferred SQL client.

    Fictional scenario: AnyCompany Global

    AnyCompany Global is a retail analytics company with a centralized IT team and distributed analytics teams. They use the following personas:

    • Alice — IT administrator (manages IAM Identity Center and AWS accounts).
    • Bob — platform engineer (sets up data infrastructure in us-west-2).
    • Ethan — data analyst (member of the awssso-sales group, queries data).

    AnyCompany Global has two AWS accounts:

    • Account A (us-east-1) — management account with IAM Identity Center.
    • Account B (us-west-2) — analytics account with Amazon Redshift, Amazon S3, and the AWS Glue Data Catalog.

    The same IAM Identity Center user (Ethan) authenticates once and accesses data in Account B (us-west-2) using the same credentials and group memberships — you don’t need additional user provisioning because IAM Identity Center replicates identities to the secondary Region.

    Solution overview

    The following diagram illustrates the multi-account, multi-Region architecture. Account A (us-east-1) hosts IAM Identity Center, which replicates identities to us-west-2 where Account B runs the analytics workloads.

    Multi-account, multi-Region architecture diagram showing IAM Identity Center in us-east-1 replicating to us-west-2, where Amazon Redshift queries S3 Tables through Lake Formation and writes to Amazon S3 through S3 Access Grants

    Figure 1: Multi-account, multi-Region architecture with S3 Access Grants, AWS Lake Formation, and IAM Identity Center.

    This solution demonstrates two complementary data access patterns, both controlled by the end user identity:

    Pattern Access method Permission controlled by
    Pattern A SELECT on S3 table bucket through Amazon Redshift Spectrum Lake Formation
    Pattern B UNLOAD/COPY to and from Amazon S3 S3 Access Grants

    The solution workflow includes the following steps:

    • Ethan connects from Amazon Redshift Query Editor v2 in us-west-2 and authenticates via the IAM Identity Center endpoint (replicated to us-west-2) using his corporate IdP credentials.
    • For Pattern A (SELECT): Amazon Redshift queries the Amazon S3 Tables catalog (s3tablescatalog). Lake Formation evaluates Ethan’s IAM Identity Center group membership and grants access to the cataloged data.
    • For Pattern B (UNLOAD/COPY): Amazon Redshift requests temporary credentials from S3 Access Grants in us-west-2. S3 Access Grants evaluates the request, matches Ethan’s identity and group membership, and vends scoped temporary credentials for the authorized S3 location.
    • Ethan runs SELECT to query data through Lake Formation, and UNLOAD to write data to Amazon S3 through S3 Access Grants. You don’t need an IAM role ARN in the commands.

    Walkthrough

    The following sections walk you through enabling IAM Identity Center Multi-Region, configuring Amazon S3 Tables with Lake Formation in the secondary Region, testing both access patterns, and verifying the result with AWS CloudTrail. Start with the prerequisites, then complete each step in order.

    Prerequisites

    You should have the following prerequisites already set up:

    • AWS Organizations enabled with at least two AWS accounts – Centralized Account(Region 1) and Member Account(Region2)
    • IAM Identity Center enabled in the management account (Account A, us-east-1) with a delegated administration account
    • Corporate IdP integrated with IAM Identity Center (users and groups synced, for example, awssso-sales and awssso-finance groups).
    • Resource sharing enabled in your organization with AWS Resource Access Manager (AWS RAM)
    • Complete solution from Part 1 replicated in us-west-2 (Account B), including:
      • Amazon Redshift cluster (in us-west-2) with IAM Identity Center integration enabled (using the replicated Identity Center endpoint in us-west-2).
      • S3 Access Grants instance configured with IAM Identity Center association
      • Amazon S3 bucket (for example, amzn-s3-demo-bucket-west) with folders for each group (for example, awssso-sales/, awssso-finance/).
      • IAM role for S3 Access Grants (for example, iamidcs3accessgrant) with trust policy and permissions policy.
      • S3 Access Grants location registered and grant created for the awssso-sales group.
      • S3 Access Grants enabled on the Amazon Redshift managed application under Trusted identity propagation
      • Cross-account resource sharing via AWS RAM (if Amazon Redshift and S3 Access Grants are in different accounts)
      • Lake Formation enabled on the Amazon Redshift managed application under Trusted identity propagation
      • Lake Formation and Glue permissions added to the IAM role used in the Amazon Redshift managed application (for example, IAMIDCRedshiftRole). For the required permissions, see Querying data through AWS Lake Formation.
    • An AWS account with an IAM role that has administrative access (e.g., Admin role) configured as a Data Lake Admin in Lake Formation

    Note: Creating and using AWS resources in this tutorial incurs charges, including AWS Key Management Service (AWS KMS) keys, S3 table buckets, Amazon Redshift clusters, and Amazon S3 storage. See the cleanup section at the end of this post to avoid ongoing charges.

    Step 1: Set up IAM Identity Center Multi-Region

    Alice performs this step in the management account (Account A, us-east-1). IAM Identity Center uses encryption at rest for identity data. To enable multi-Region, you must first create a multi-Region customer-managed AWS Key Management Service (AWS KMS) key and replicate it to the additional Region.

    Create a multi-Region AWS KMS key

    1. On the AWS KMS console in us-east-1, choose Create key.
    2. For Key type, select Symmetric.
    3. For Key usage, select Encrypt and decrypt.
    4. Under Advanced options, select Multi-Region key.
    5. Provide an alias (for example, idc-multi-region-key).
    6. Apply the AWS KMS key policy as documented in Baseline KMS key policy.

    Replicate the key to us-west-2

    1. On the AWS KMS console in us-east-1, select the key you created.
    2. Choose the Regionality tab.
    3. Choose Create new replica keys.
    4. Select US West (Oregon) us-west-2.
    5. Choose Replicate key.

    For detailed instructions, see Creating multi-Region replica keys.

    AWS KMS console Regionality tab showing the multi-Region replica key configured for an additional Region

    Figure 2: Replica key configured for the additional Region.

    Add us-west-2 to IAM Identity Center

    1. On the IAM Identity Center console in us-east-1, in the navigation pane, choose Settings.
    2. Choose Add Region.
    3. From the Region list, select US West (Oregon) us-west-2. The list shows Regions where you replicated the customer-managed AWS KMS key.
    4. Choose Add Region.

    A blue banner indicates that Identity Center is replicating your workforce identities, configuration, and metadata to the new Region. After the initial replication, the Replication Status column changes to Replicated. Your Identity Center endpoints in us-west-2 are now active.

    For detailed instructions, see Add the Region in IAM Identity Center.

    IAM Identity Center Settings page with the multi-Region replica key added for us-west-2 and replication status set to Replicated

    Figure 3: IAM Identity Center settings showing the multi-Region replica key added for us-west-2.

    Update your IdP configuration for the additional Region

    You’ve successfully replicated your Identity Center instance to the Oregon (us-west-2) Region. Your workforce identities are now available in that additional Region and can use the new AWS access portal endpoint.

    To make sure AWS managed application (service provider-initiated) authentication redirect user to respective application, add the ACS URL for the additional Region so that the app contains both Regional ACS URLs.

    In the following section highlighted in red, you can view all ACS URL information:

    IAM Identity Center settings page with the View ACS URLs section highlighted in red

    Figure 4: IAM Identity Center settings showing the View ACS URLs option.

    Copy the respective ACS URL as shown in the following figure:

    IAM Identity Center settings page listing the ACS URLs for both Regions

    Figure 5: IAM Identity Center settings showing the ACS URLs for both Regions.

    Use the following instructions to add the ACS URL for the additional Region in your Identity Center application in Okta:

    1. Log in to the Okta portal as an Admin.
    2. Expand the Applications drop-down in the left pane, then choose Applications
    3. Choose your Identity Center Application
    4. Select the Sign-on tab and choose Edit in the Settings windows.
    5. In the AWS SSO ACS URL1 box under Advanced Sign-on Settings – add the additional ACS URL
    6. Choose Save.

    Okta application Sign-on tab with the AWS SSO ACS URL1 box configured for the IAM Identity Center application

    Figure 6: Okta application for IAM Identity Center Sign-on tab to add ACS URLs.

    Create a permission set for the secondary Region

    Create a permission set in the management account to grant federated users console access to Amazon Redshift Query Editor V2 in the secondary Region (us-west-2). For more information about permission sets, see Permission sets.

    1. In the management account, open the IAM Identity Center console.
    2. In the navigation pane, under Multi-Account permissions, choose Permission setsCreate permission set.
    3. Choose Custom permission set, then choose Next.
    4. Under AWS managed policies, select AmazonRedshiftQueryEditorV2ReadSharing.
    5. Under Inline policy, add the following policy:
      {
        "Version": "2012-10-17",
        "Statement": [
          {
            "Effect": "Allow",
            "Action": [
              "redshift:DescribeQev2IdcApplications",
              "redshift-serverless:ListNamespaces",
              "redshift-serverless:ListWorkgroups",
              "redshift-serverless:GetWorkgroup"
            ],
            "Resource": "*"
          }
        ]
      }

    6. Choose Next. Enter a permission set name (for example, Redshift-QEV2-West).
    7. Under Relay state, set the default to the Query Editor V2 URL for the secondary Region: https://us-west-2.console.aws.amazon.com/sqlworkbench/home.
    8. Choose Next, then Create.

    After creation, assign this permission set to the relevant IAM Identity Center group (for example, awssso-sales) for Account B (us-west-2).

    Step 2: Set up Amazon S3 Tables integration with AWS Glue Data Catalog and Lake Formation in Account B (us-west-2)

    In this step, the data lake administrator (Bob) sets up Amazon S3 Tables with Lake Formation for fine-grained access control. He completes the following tasks:

    1. Create an S3 tables bucket.
    2. Enable S3 Tables integration with AWS Glue Data Catalog and Lake Formation.
    3. Register the table bucket with Lake Formation (removes default IAM-based access).
    4. Grant Lake Formation permissions to an IAM Identity Center group (awssso-sales) so that only authorized users can query data through Trusted Identity Propagation.

    Step 2.1: Remove default Lake Formation permissions

    Before creating S3 Tables resources, disable the default IAMAllowedPrincipals grants that Lake Formation applies to new databases and tables. By default, Lake Formation grants IAMAllowedPrincipals access to new resources, which means that standard IAM policies (rather than Lake Formation permissions) control access. For identity-based access through Trusted Identity Propagation, you need Lake Formation to be the sole arbiter of access.

    The order matters. If you remove these defaults before registering the S3 Tables resource, Lake Formation will not apply IAMAllowedPrincipals to your S3 Tables catalog or its children. If you register the resource first, you need to manually revoke the IAMAllowedPrincipals grants from each resource.

    From the console

    1. Open the Lake Formation console in your target Region (for example, us-west-2).
    2. In the left navigation, choose Administration → Data Catalog settings.
    3. Uncheck both options:
      • Use only IAM access control for new databases
      • Use only IAM access control for new tables in new databases
    4. Choose Save.

    Lake Formation Data Catalog settings page with both default IAM access control options cleared

    Figure 7: Lake Formation Data Catalog settings with default IAM access control disabled.

    Optional: Verify Lake Formation default permissions through the AWS CLI

    aws lakeformation get-data-lake-settings --region <REGION>

    Confirm both CreateDatabaseDefaultPermissions and CreateTableDefaultPermissions are empty arrays ([]).

    Add AWSServiceRoleForRedshift as a read-only admin

    If you plan to query S3 Tables from Amazon Redshift Query Editor V2, you must add the Amazon Redshift service-linked role as a Read-Only Admin in Lake Formation. Complete the following steps:

    • In the Lake Formation console, go to AdministrationAdministrative roles and tasks.
    • Under Data lake administrators, choose Add. Choose Read only administrator.
    • From the menu, choose AWSServiceRoleForRedshift.
    • Choose Confirm.

    Important: Without this, Amazon Redshift Query Editor V2 doesn’t display external databases from s3tablescatalog. The Amazon Redshift service-linked role needs read-only admin access to browse the Data Catalog on behalf of users.

    Step 2.2: Create the Lake Formation data access role for S3 Tables

    Create an IAM role that Lake Formation assumes to generate temporary, scoped credentials on behalf of users requesting access to S3 Tables data. Lake Formation uses this role (instead of its service-linked role) because Trusted Identity Propagation requires sts:SetContext in the trust policy, which is not available on the service-linked role. Without a custom role with this permission, Lake Formation cannot propagate the user’s IAM Identity Center identity when accessing S3 Tables.

    Create the role with the trust policy

    aws iam create-role \
        --role-name LFAccessRole-S3Tables \
        --assume-role-policy-document '{
            "Version": "2012-10-17",
            "Statement": [{
                "Effect": "Allow",
                "Principal": {
                    "Service": "lakeformation.amazonaws.com"
                },
                "Action": [
                    "sts:AssumeRole",
                    "sts:SetSourceIdentity",
                    "sts:SetContext"
                ]
            }]
        }'

    Attach the S3 Tables permissions policy

    aws iam put-role-policy \
        --role-name LFAccessRole-S3Tables \
        --policy-name S3TablesDataAccess \
        --policy-document '{
            "Version": "2012-10-17",
            "Statement": [
                {
                    "Sid": "LakeFormationPermissionsForS3ListTableBucket",
                    "Effect": "Allow",
                    "Action": ["s3tables:ListTableBuckets"],
                    "Resource": ["*"]
                },
                {
                    "Sid": "LakeFormationDataAccessPermissionsForS3TableBucket",
                    "Effect": "Allow",
                    "Action": [
                        "s3tables:CreateTableBucket",
                        "s3tables:GetTableBucket",
                        "s3tables:CreateNamespace",
                        "s3tables:GetNamespace",
                        "s3tables:ListNamespaces",
                        "s3tables:DeleteNamespace",
                        "s3tables:DeleteTableBucket",
                        "s3tables:CreateTable",
                        "s3tables:DeleteTable",
                        "s3tables:GetTable",
                        "s3tables:ListTables",
                        "s3tables:RenameTable",
                        "s3tables:UpdateTableMetadataLocation",
                        "s3tables:GetTableMetadataLocation",
                        "s3tables:GetTableData",
                        "s3tables:PutTableData"
                    ],
                    "Resource": ["arn:aws:s3tables:<REGION>:<ACCOUNT_ID>:bucket/*"]
                }
            ]
        }'

    Step 2.3: Register S3 Tables with Lake Formation

    Register the S3 Tables resource with Lake Formation using the data access role. This step lets Lake Formation manage access to S3 Tables through the Data Catalog and creates the s3tablescatalog federated catalog automatically.

    Open the Lake Formation console and complete the following steps:

    1. Choose Catalogs in the navigation pane and choose Enable S3 Table integration.

    Lake Formation Catalogs page with the Enable S3 Table integration option highlighted

    Figure 8: Lake Formation Catalogs page with the Enable S3 Table integration option.

    1. Select the IAM role and select Allow external engines to access data in Amazon S3 locations with full table access. Choose Enable.

    Enable S3 Table integration dialog with the IAM role selected and the Allow external engines option enabled

    Figure 9: Enable S3 Table integration dialog with the IAM role and external-engine access configured.

    Alternative: Register through the AWS CLI

    aws lakeformation register-resource \
        --resource-arn "arn:aws:s3tables:<REGION>:<ACCOUNT_ID>:bucket/*" \
        --role-arn "arn:aws:iam::<ACCOUNT_ID>:role/LFAccessRole-S3Tables" \
        --with-federation \
        --region <REGION>

    Important: Verify that the --role-arn matches the exact ARN of the role created in Step 2.2 (including the path). A mismatch (e.g., role/service-role/LFAccessRole-S3Tables vs role/LFAccessRole-S3Tables) will cause credential vending failures later.

    Optional: Verify the registration

    aws lakeformation list-resources --region <REGION>

    Confirm the S3 Tables entry shows WithFederation: true and the correct role ARN.

    Step 2.4: Create the S3 table bucket and namespace

    Create an S3 table bucket and a namespace. Complete the following steps on the Amazon S3 console:

    1. In the navigation pane, choose Table buckets.
    2. Choose Create table bucket.
    3. On the next page, enter the bucket name as <TABLE_BUCKET_NAME>.
    4. Keep the other options as default and choose Create table bucket.
    5. After you create it, the AWS Management Console redirects you to the list of table buckets. Choose the table bucket <TABLE_BUCKET_NAME>.
    6. Choose Create table with Athena.
    7. Create a namespace in S3 Tables (equivalent to a database in AWS Glue Data Catalog). Enter the namespace (database) name as <NAMESPACE_NAME> and choose Create namespace.

    You can also perform these steps using the AWS Command Line Interface (AWS CLI). Refer to Creating a table bucket using the AWS CLI for equivalent commands.

    Step 2.5: Grant admin role access

    After you remove default permissions, you need to give your Admin role explicit Lake Formation permissions to create tables. Because your Admin role is a Data Lake Admin, you can already see s3tablescatalog in the Amazon Athena console, but creating tables requires an explicit grant.

    From the console

    • Open the Lake Formation console in your Region.
    • Choose Data permissionsGrant.
    • Under Principals, select IAM users and roles and choose your Admin role.
    • Under LF-Tags or catalog resources, select Named Data Catalog resources.
    • For Catalogs, choose <Account ID>:s3tablescatalog/<Table_Bucket_Name>.
    • For Databases, select your database (for example, customer_ns_db).
    • Select Super for Database permissions and Grantable permissions.
    • Choose Grant.

    After this grant, you can create and insert data into tables from the Athena console.

    Note: Your Admin role must be a Data Lake Admin (configured in Step 2.1) to browse s3tablescatalog in Athena. You need the explicit database grant for write operations (CREATE TABLE, INSERT).

    Step 2.6: Create a table from the Athena console

    1. Open the Amazon Athena console in your Region.
    2. In the Data source menu, select AwsDataCatalog.
    3. For Catalog, choose s3tablescatalog/<Table_Bucket_Name>.
    4. For Database, choose your namespace.
    5. Run a CREATE TABLE statement. For example:
    CREATE TABLE <NAMESPACE_NAME>.<TABLE_NAME> (
        customer_id int,
        first_name string,
        last_name string,
        region string,
        membership_tier string
    )
    TBLPROPERTIES ('table_type' = 'ICEBERG');
    
    INSERT INTO <NAMESPACE_NAME>.<TABLE_NAME> VALUES
      (1, 'Joyce', 'Deaton', 'West', 'Gold'),
      (2, 'Daniel', 'Dow', 'East', 'Silver'),
      (3, 'Marie', 'Lange', 'West', 'Gold'),
      (4, 'Wesley', 'Harris', 'East', 'Bronze'),
      (5, 'Jerry', 'Tracy', 'West', 'Silver');

    Step 2.7: Grant permissions to the IAM Identity Center group

    Give your IAM Identity Center group access to query tables. This step enables Trusted Identity Propagation (TIP) for this group. When users in the group access data through TIP-integrated services like Amazon Redshift, Lake Formation evaluates their IAM Identity Center group membership and enforces table-level and column-level permissions accordingly.

    From the console

    Grant DESCRIBE on the database:

    1. Open the Lake Formation console in your Region.
    2. Choose Data permissionsGrant.
    3. Under Principals, select IAM Identity Center and choose your IAM Identity Center group (for example, awssso-sales).
    4. Under LF-Tags or catalog resources, select Named Data Catalog resources.
    5. For Catalogs, choose <Account ID>:s3tablescatalog/<Table_Bucket_Name>.
    6. For Databases, select your database (for example, customer_ns_db).
    7. For Database permissions, select Describe.
    8. Choose Grant.

    Grant SELECT and DESCRIBE on tables:

    1. Choose Data permissionsGrant.
    2. Under Principals, select IAM Identity Center and choose your IAM Identity Center group (for example, awssso-sales).
    3. Under LF-Tags or catalog resources, select Named Data Catalog resources.
    4. For Catalogs, choose <Account ID>:s3tablescatalog/<Table_Bucket_Name>.
    5. For Databases, select your database (for example, customer_ns_db).
    6. For Tables, select All tables (or a specific table).
    7. For Table permissions, select Select and Describe.
    8. Choose Grant.

    Tip: You can also configure column-level or row-level permissions for fine-grained access control. When granting on a specific table, additional options for Column permissions and Data filters become available.

    Step 2.8: Optional: Verify the Lake Formation permissions

    Confirm database-level permissions

    aws lakeformation list-permissions \
        --resource '{"Database": {"CatalogId": "<ACCOUNT_ID>:s3tablescatalog/<TABLE_BUCKET_NAME>", "Name": "<NAMESPACE_NAME>"}}' \
        --region <REGION>

    Confirm table-level permissions

    aws lakeformation list-permissions \
        --resource '{"Table": {"CatalogId": "<ACCOUNT_ID>:s3tablescatalog/<TABLE_BUCKET_NAME>", "DatabaseName": "<NAMESPACE_NAME>", "TableWildcard": {}}}' \
        --region <REGION>

    You should see:

    • Your Admin role with ALL permissions at the database level.
    • Your IAM Identity Center group with DESCRIBE permissions at the database level.
    • Your IAM Identity Center group with DESCRIBE on ALL_TABLES and SELECT on ALL_TABLES (with ColumnWildcard) at the table level.
    • No IAM_ALLOWED_PRINCIPALS entries.

    Step 2.9: Create Amazon Redshift tables and grant permissions

    Connect to the Amazon Redshift cluster in us-west-2 as an admin user and create Redshift local tables. Grant permissions on those local resources to IAM Identity Center groups.

    Create a schema and table

    CREATE SCHEMA IF NOT EXISTS sales_schema;
    
    CREATE TABLE IF NOT EXISTS
    sales_schema.store_sales (
      customer_id INTEGER ENCODE az64,
      product VARCHAR(50),
      sales_amount INTEGER ENCODE az64
    )
    DISTSTYLE AUTO;
    
    -- Insert sample data
    INSERT INTO sales_schema.store_sales VALUES
      (1, 'Laptop', 1200),
      (2, 'Phone', 800),
      (3, 'Tablet', 450),
      (4, 'Monitor', 350),
      (5, 'Keyboard', 120);

    Grant permissions to the IAM Identity Center group

    GRANT USAGE ON SCHEMA sales_schema TO ROLE "awsidc:awssso-sales";
    GRANT SELECT, INSERT FOR TABLES IN SCHEMA sales_schema TO ROLE "awsidc:awssso-sales";
    
    -- Grant access to the S3 Tables external database in Redshift (for Lake Formation queries on customer profiles)
    GRANT USAGE ON DATABASE "customers3tables@s3tablescatalog" TO ROLE "awsidc:awssso-sales";

    Step 3: Test the solution

    In the management account, navigate to the IAM Identity Center console and copy the AWS access portal URL (for example, https://d-1234560789.awsapps.com/start) from the dashboard.

    • Log out from the management account and paste the AWS access portal URL in a new browser window.
    • A pop-up redirects you to your IdP login page. Enter Ethan’s IdP credentials.
    • After successful authentication, you’re logged into the AWS console as a federated user. Select the QEV2 permission set for the secondary Region (us-west-2).
    • In Query Editor V2, open the context (right-click) menu on your Amazon Redshift instance, choose Create connection, and for Authentication, select IAM Identity Center.
    • Because your IdP credentials are already cached, the browser reuses them automatically. You’re now connected to Amazon Redshift.

    Pattern A: Query the S3 table catalog using Lake Formation permissions

    Query the customer profile data through s3tablescatalog. Lake Formation enforces access based on Ethan’s IAM Identity Center group membership:

    SELECT *
    FROM "customers3tables@s3tablescatalog"."customer_ns_db"."customer_profiles";

    Amazon Redshift Query Editor V2 results pane displaying customer profile rows returned from the s3tablescatalog through Lake Formation

    Figure 10: Query results from s3tablescatalog returned through Lake Formation in Amazon Redshift Query Editor V2.

    This query reads customer profile data from Amazon S3 through Amazon Redshift Spectrum, with Lake Formation controlling who can access which tables and columns.

    Pattern B: Unload data to Amazon S3 using S3 Access Grants

    Run the UNLOAD command to write data from Amazon Redshift to the S3 bucket:

    UNLOAD ('SELECT * FROM "dev"."sales_schema"."store_sales"')
    TO 's3://west-idc-amzn-s3-demo-bucket/awssso-sales/';

    You don’t need an IAM role ARN in the command. S3 Access Grants handles authorization based on Ethan’s IAM Identity Center identity and group membership, propagated across Regions using IAM Identity Center Multi-Region support.

    Verify the data in Amazon S3

    On the Amazon S3 console, navigate to s3://west-idc-amzn-s3-demo-bucket/awssso-sales/ and verify that the unloaded data files are present.

    Join Lake Formation data with locally loaded Amazon Redshift data

    Combine customer profile data (queried via Lake Formation) with sales data (loaded via S3 Access Grants) using the shared customer_id column:

    SELECT c.first_name, c.last_name, c.membership_tier,
      s.product, s.sales_amount
    FROM "customers3tables@s3tablescatalog"."customer_ns_db"."customer_profiles" c
    JOIN  dev.sales_schema.store_sales s ON c.customer_id = s.customer_id
    ORDER BY s.sales_amount DESC;

    Amazon Redshift Query Editor V2 results joining S3 Tables customer profiles with the local store_sales table

    Figure 11: Joined results from S3 Tables and Amazon Redshift local data, ordered by sales amount.

    This shows that you can join S3 Tables data with Amazon Redshift using the same IAM Identity Center identity.

    Verify access control

    To confirm that S3 Access Grants is enforcing access, try accessing a folder Ethan does not have a grant for:

    UNLOAD ('SELECT * FROM "dev"."sales_schema"."store_sales"')
    TO 's3://west-idc-amzn-s3-demo-bucket/awssso-finance/';

    This should return an access denied error, confirming that S3 Access Grants is controlling access based on the user’s identity and group membership.

    Step 4: Verify with AWS CloudTrail

    You can verify that Amazon Redshift used both S3 Access Grants and Lake Formation for authorization by checking AWS CloudTrail:

    • On the CloudTrail console, choose Event history.
    • Filter by Event source: s3.amazonaws.com. Look for GetDataAccess events (S3 Access Grants).
    • Filter by Event source: lakeformation.amazonaws.com. Look for GetDataAccess events (Lake Formation).

    Both event types show Ethan’s IAM Identity Center user identity, confirming trusted identity propagation works end-to-end for both access patterns.

    The following table lists related blog posts and integration guides covering additional identity-based access patterns with Amazon Redshift. Although many of these were written for single-Region deployments, you can extend them to multi-Region environments by first enabling IAM Identity Center Multi-Region as described in Step 1 of this post. Use the table to find the guide that matches your identity provider and tooling:

    Integration / use case Identity provider What it covers Blog link
    Amazon Redshift federated permissions Any Centralize permission management across multiple Amazon Redshift clusters within a Region using IAM Identity Center-linked database roles. Simplify multi-warehouse data governance with Amazon Redshift federated permissions
    Amazon Redshift Query Editor V2, DbVisualizer, DBeaver Any Foundational Amazon Redshift and IAM Identity Center setup, role-based access control (RBAC), JDBC single sign-on (SSO) with PKCE. Integrate IdP with Query Editor V2 and SQL client
    Amazon Redshift and S3 Access Grants (single Region and cross-account) Any Amazon S3 data access through UNLOAD/LOAD with identity-based permissions. Simplify data access with S3 Access Grants
    Amazon SageMaker Unified Studio with Athena and Amazon Redshift Any SQL analytics with Lake Formation governance. Configure SSO with SageMaker Unified Studio
    Amazon QuickSight with Lake Formation Any Cross-account Glue Data Catalog, business intelligence dashboards. Cross-account Glue and Lake Formation
    Tableau (Desktop, Server, Prep) Okta TTI plus OIDC setup, Tableau OAuth XML configuration. Integrate Tableau with Okta
    Tableau (Desktop, Server, Prep) PingFederate TTI plus OIDC setup, JWT access token manager. Integrate Tableau with PingFederate
    Tableau (Desktop, Server, Prep) Microsoft Entra ID TTI plus OIDC setup, Entra app registration. Integrate Tableau with Entra ID
    ThoughtSpot Okta / Microsoft Entra ID Native OIDC integration, supports both IdPs. Integrate ThoughtSpot

    Key considerations

    When implementing this multi-Region architecture, keep the following operational and configuration considerations in mind. These reflect common challenges and design decisions encountered during deployment:

    • IAM Identity Center Multi-Region requires a customer-managed multi-Region AWS KMS key replicated to each additional Region before you can add the Region to Identity Center.
    • S3 Access Grants instances are regional. You need a separate instance in each Region where your users access data. A bucket must be in the same Region as the Access Grants instance that manages it.
    • IAM Identity Center Multi-Region provides the same user and group identities across Regions, so you can use the same group IDs in grants across Regions.
    • You must register Lake Formation data locations with a customer-managed role that includes sts:SetContext in its trust policy. For S3 Tables, use aws lakeformation register-resource with the --with-federation flag and the resource ARN format arn:aws:s3tables:<REGION>:<ACCOUNT_ID>:bucket/*. Using the service-linked role causes the error: Cannot vend credentials from service-linked role to Identity Center principal.
    • SELECT and UNLOAD use different permission models. Lake Formation controls query-time access to cataloged data (SELECT through Spectrum). S3 Access Grants controls direct Amazon S3 access (COPY/UNLOAD). Both use the same IAM Identity Center identity.
    • The Amazon Redshift managed application IAM role must include sts:SetContext in its trust policy and have both Lake Formation/Glue and S3 Access Grants permissions.
    • Cross-account setup requires AWS RAM resource sharing for S3 Access Grants and proper IAM Identity Center application configuration in the analytics account.
    • Scoped vs object-level permissions in Amazon Redshift. When granting permissions with GRANT ... FOR TABLES IN SCHEMA, use REVOKE ... FOR TABLES IN SCHEMA to remove them. The REVOKE ... ON ALL TABLES IN SCHEMA syntax only removes object-level permissions, not scoped permissions.
    • The Lake Formation data access role for S3 Tables requires sts:SetContext in its trust policy (for TIP) and s3tables:* permissions on the table bucket resources.
    • AWSServiceRoleForRedshift must be a Read-Only Admin in Lake Formation for Amazon Redshift Query Editor V2 to display external databases from s3tablescatalog.
    • Federated catalog CatalogId format. When using CLI commands for S3 Tables resources in Lake Formation, use the full path format: <ACCOUNT_ID>:s3tablescatalog/<TABLE_BUCKET_NAME>. Using the account ID alone returns empty results.

    Clean up

    To avoid ongoing charges, clean up the resources created in this post:

    • Delete the S3 table bucket (delete tables → namespaces → bucket using aws s3tables CLI commands).
    • Deregister the S3 Tables resource from Lake Formation (aws lakeformation deregister-resource --resource-arn "arn:aws:s3tables:<REGION>:<ACCOUNT_ID>:bucket/*").
    • Delete s3tablescatalog from Glue (aws glue delete-catalog --catalog-id "s3tablescatalog").
    • Delete the LFAccessRole-S3Tables IAM role and associated policies.
    • Delete the S3 Access Grants instance and grants in us-west-2.
    • Delete the S3 bucket used for UNLOAD/COPY in us-west-2.
    • Delete the iamidcs3accessgrant IAM role and associated policies.
    • Deregister the S3 data location from Lake Formation.
    • Delete the Lake Formation IAM Identity Center integration.
    • Delete the Amazon Redshift cluster in us-west-2 if you created one for testing.
    • Remove us-west-2 from IAM Identity Center Multi-Region (if no longer needed).
    • Schedule deletion of the AWS KMS replica key in us-west-2 (minimum 7-day waiting period).

    Conclusion

    In this post, we extended the Amazon Redshift and S3 Access Grants integration to a multi-Region setup using IAM Identity Center Multi-Region replication. We demonstrated two complementary data access patterns: SELECT through Lake Formation for fine-grained access control on S3 Tables data, and UNLOAD/COPY through S3 Access Grants for direct Amazon S3 access. Both patterns use the same IAM Identity Center identity for access control. We also showed how to set up a customer-managed multi-Region AWS KMS key, enable IAM Identity Center in an additional Region, configure Amazon S3 Tables with Lake Formation for identity-based access control using Trusted Identity Propagation, and replicate the complete S3 Access Grants setup in a different Region and account.

    With this approach, AnyCompany Global’s analysts authenticate once and access data in any enabled Region while Lake Formation and S3 Access Grants enforce per-user, per-group access policies.

    For additional guidance, refer to the following resources:


    About the authors

    Maneesh Sharma

    Maneesh Sharma

    Maneesh is a Sr. Specialist Solutions Architect in Analytics at AWS, bringing more than 15 years of hands-on experience in designing and implementing large-scale data warehouse and analytics solutions. He collaborates closely with customers to help them build scalable, high-performance analytical data platforms.

    Rohit Vashishtha

    Rohit Vashishtha

    Rohit is a Senior Analytics Specialist Solutions Architect at AWS based in Dallas, Texas. He has two decades of experience architecting, building, leading, and maintaining big data platforms. Rohit helps customers modernize their analytic workloads using the breadth of AWS services and ensures that customers get the best price/performance with utmost security and data governance.

    Srividya Parthasarathy

    Srividya Parthasarathy

    Srividya is a Senior Big Data Architect with Amazon SageMaker Lakehouse. She works with the product team and customers to build robust features and solutions for their analytical data platform. She enjoys building data mesh solutions and sharing them with the community.

    Sandeep Adwankar

    Sandeep Adwankar

    Sandeep is a Senior Product Manager with Amazon SageMaker Lakehouse. Based in the California Bay Area, he works with customers around the globe to translate business and technical requirements into products that help customers improve how they manage, secure, and access data.

    Modernizing financial analytics with Amazon SageMaker Unified Studio

    Post Syndicated from Umang Aggarwal original https://aws.amazon.com/blogs/architecture/modernizing-financial-analytics-with-amazon-sagemaker-unified-studio/

    Avanse Financial Services is one of India’s leading education loan providers. Their Data Engineering Team had built a data lake on AWS using Amazon Simple Storage Service (Amazon S3), Amazon Athena, and AWS Glue for data ingestion and processing. However, their analytics and reporting layer ran on an external analytics application that wasn’t integrated with AWS. Data had to be copied from Amazon S3 into this external application before analysts could run any report, its license consumed a significant portion of their budget despite low utilization, and every integration with AWS services required custom-built pipelines.

    After evaluating their options, Avanse migrated to a cloud-native lakehouse architecture using Amazon SageMaker Unified Studio, which unified their data engineering, analytics, and artificial intelligence (AI) workflows in a single governed environment on AWS. In this post, we walk through their migration journey so you can adapt their approach to your own environment.

    Why Avanse chose to modernize

    The separation between their AWS data lake and their external analytics application created five problems:

    1. Daily data synchronization bottleneck. Every report required a 4-hour batch copy from Amazon S3 into the external analytics application before analysts could query it. Business decisions were based on data that was at least a day old.
    2. Fixed licensing costs disconnected from usage. The external analytics application charged an annual fee regardless of how many queries analysts ran. Avanse needed usage-based pricing that matched what they actually consumed, not a fixed fee for capacity they weren’t using.
    3. Limited auditability. The external analytics application ran on a shared server where different business units (risk, collections, portfolio management) shared the same resources. It lacked granular audit trails, making it difficult to trace who accessed what data and when, or to allocate costs per team.
    4. No centralized data discovery. Although AWS Glue Data Catalog managed schema metadata for the data lake, the external analytics application couldn’t access it. Analysts working in that application relied on folder structures and manual documentation to find the right datasets, slowing onboarding and increasing the risk of using outdated data.
    5. Disconnected from AWS services. The external analytics application couldn’t query data in Amazon S3 or use AWS Glue catalogs natively. Every data flow required connectors and custom-built pipelines, adding maintenance overhead.

    Additionally, some datasets were stored on Network File System (NFS) storage outside of Amazon S3, creating another data silo that needed to be consolidated.

    Avanse chose Amazon SageMaker Unified Studio because it addressed all five challenges: direct querying of data in Amazon S3 avoiding synchronization, usage-based compute through Amazon Athena and Amazon EMR Serverless, project-based isolation with per-project billing, lineage tracking with AWS IAM Identity Center, and native integration with their existing AWS services.

    Solution overview

    The core architectural change was moving from a two-application model to a single integrated stack:

    Previous architecture
    Avanse’s data ingestion and processing ran on AWS (Amazon S3, AWS Glue, Athena), but analytics and reporting ran on an external analytics application. Data had to be batch-copied from Amazon S3 into this external application daily before analysts could query it. Each system had its own access controls, and there was no shared catalog or lineage tracking between them.
    New architecture
    Analytics now run directly against data in Amazon S3 through Amazon SageMaker Unified Studio. There’s no data copy step. Analysts query the same data that the ingestion pipelines produce, using Athena for SQL and EMR Serverless for large-scale processing. Governance, access control, and lineage are centralized through IAM Identity Center and SageMaker Catalog.

    The following diagram illustrates the target architecture. It follows a lakehouse pattern, storing data in open formats on Amazon S3 while maintaining ACID transaction support for the consistency financial regulators expect.

    Three-layer lakehouse architecture for Avanse on AWS, showing the data layer with Amazon S3 and AWS Glue Data Catalog, the compute layer with Amazon SageMaker Unified Studio, AWS Glue ETL, AWS Lambda, Amazon EMR Serverless, Amazon SageMaker AI, and Amazon Bedrock, and the governance layer with AWS IAM Identity Center, SageMaker Catalog, and Amazon DataZone

    The architecture has three layers:

    1. Data layer – Amazon S3 stores data in open formats (Parquet, Delta Lake) with S3 Intelligent-Tiering for automatic cost optimization. AWS Glue Data Catalog maintains schema metadata, making data discoverable across tools.
    2. Compute layer – Amazon SageMaker Unified Studio provides project-based workspaces organized by business function. Collections uses the built-in SQL Query Editor powered by Athena, Risk Reporting uses JupyterLab for interactive analysis, and MIS runs large-scale Spark jobs through Amazon EMR Serverless. AWS Glue ETL handles data transformations and AWS Lambda provides event-driven triggers for report generation. For machine learning (ML) workloads, Amazon SageMaker AI supports model training and deployment, with Amazon Bedrock available for generative AI capabilities such as enhancing risk narratives.
    3. Governance layer – IAM Identity Center provides SSO and audit logging across workspaces. SageMaker Catalog serves as the business glossary with data lineage tracking and access controls. Amazon DataZone connects components through a common metadata layer.

    Migration journey

    Avanse followed a five-phase approach. The timelines can be adapted to your environment, but the systematic progression from validation through production deployment is key.

    Phase 1: Technical validation (72-hour workshop)

    Avanse started with a focused 72-hour workshop using isolated SageMaker environments where developers could experiment without impacting production. Their team tested SQL analytics against existing Athena tables and validated that Python and PySpark could replicate their existing analytics workflows.

    The team confirmed that querying data directly in Amazon S3 addressed their synchronization bottleneck entirely. The 4-hour daily data copy was no longer necessary, which validated the migration approach.

    Phase 2: Data migration and storage optimization

    Avanse migrated datasets from NFS storage and legacy analytics formats into Amazon S3, consolidating the data into a single location. They implemented S3 Intelligent-Tiering, which automatically moves data between access tiers based on usage patterns, optimizing costs without impacting retrieval performance.

    They replaced legacy analytics connectors with native Athena workgroups within SageMaker Unified Studio, avoiding data synchronization entirely. Source data remained in Amazon S3, queryable by both Athena SQL and SageMaker notebooks, establishing a single source of truth.

    Phase 3: Compute modernization

    Avanse moved from a shared analytics server to project-based isolation in SageMaker Unified Studio. Each business function (Risk Reporting, Collections, MIS) received its own project with dedicated compute spaces running JupyterLab. Project-specific IAM execution roles provided access controls and cost allocation per business unit.

    A single browser-based URL with multi-factor authentication (MFA) now provides access to SQL analytics using the built-in query editor, ML development in JupyterLab notebooks, and big data processing through Amazon EMR Serverless. This replaced the need for local analytics client installations.

    Phase 4: Governance implementation

    Avanse deployed SageMaker Catalog as their central business data catalog. Analysts now discover approved datasets through semantic search rather than navigating folder structures or relying on manual documentation. They mapped technical Athena table names to business terms. For example, analysts search for “collection efficiency” and find the relevant tables with descriptions, schemas, and lineage.

    Lineage capture traces each metric in risk reports back to source tables, transformations, and intermediate datasets. Every action (notebook execution, SQL query, data access) is tied to IAM Identity Center users, creating the comprehensive audit trail their compliance team needed.

    Phase 5: Use case migration

    Rather than attempting a big-bang migration, Avanse moved critical workflows one at a time:

    Portfolio MIS (Monthly/Fortnightly)
    Previously required the daily 4-hour data copy from Amazon S3 into the external analytics application before report generation could begin. Avanse avoided the data synchronization step entirely and now generates MIS reports by querying existing Athena tables directly in Amazon S3. Because the source data was already on AWS, there was no need to involve the external application for this activity. Report generation dropped from hours to under 30 minutes.
    Collection Efficiency and Bounce Calculation
    Ported complex legacy analytics procedures for calculating metrics like collection efficiency and bounce rates to event-driven processing using AWS Glue ETL, AWS Lambda, and PySpark jobs for high-volume data aggregation. The serverless execution model charges only for compute time consumed.
    EDW Risk Reporting
    Large-scale regulatory joins of Enterprise Data Warehouse assets previously ran as legacy scheduled procedures. These now run as SQL queries in the SageMaker Unified Studio query editor, where analysts execute them on-demand or schedule them through Athena workgroups. The distributed query engine handles complex multi-table joins spanning millions of rows.
    Scorecard Generation
    Model building shifted from the external analytics application to SageMaker AI workflows. Data scientists use JupyterLab with Python libraries and deploy models directly to SageMaker endpoints, avoiding data movement between separate environments.

    Overcoming technical challenges

    One technical challenge was code migration. Avanse’s analytics code base contained years of accumulated proprietary scripts and procedures. Direct line-by-line translation was not practical. Instead, they took a pragmatic approach: basic data transformations moved to SQL in Athena, complex business logic was rewritten in PySpark for scalability, and statistical procedures were replaced with Python libraries like pandas and scikit-learn. The approach was to focus on what the code accomplishes, then implement it using cloud-native patterns.

    The other technical challenge was performance validation. The team needed to confirm that querying data in Amazon S3 would deliver acceptable performance compared to the external analytics application’s in-memory processing. Queries against Parquet-formatted data in Amazon S3 using Athena delivered comparable performance for standard reporting workloads, while avoiding the 4-hour daily data synchronization step entirely. For large-scale regulatory joins spanning millions of rows, Amazon EMR Serverless provided distributed Spark processing that completed in minutes rather than the hours required in the external application.

    Key outcomes

    Area Result
    Licensing costs Avoided external analytics application fees entirely
    Storage costs Reduced through S3 Intelligent-Tiering, which automatically moves data between access tiers based on usage patterns
    Report generation From over 4 hours (including data synchronization from Amazon S3 to the external analytics application) to under 30 minutes with direct Amazon S3 querying
    Compliance audits From weeks of manual investigation to days with automated lineage reports
    Compute costs Usage-based serverless model replaced always-on external analytics infrastructure
    Collaboration Unified browser-based environment for data scientists, analysts, and engineers

    “By adopting SageMaker Unified Studio, we as the Data Team eliminated legacy licensing costs, reduced storage and compute expenses with a serverless, usage-based model, and accelerated our periodic report generation. At the same time, we transformed compliance and collaboration by cutting audit timelines while unifying our teams in a single, efficient data environment.” – Komal Thakkar, AVP – Lead, Data Engineering, Avanse Financial Services

    Best practices

    Based on their experience, Avanse recommends:

    • Start with a workshop. Validate your specific use cases in a 72-hour technical validation before committing to full migration.
    • Migrate use cases, not code. Focus on what your analytics accomplish, then implement using cloud-native patterns rather than translating legacy scripts line by line.
    • Invest in governance early. Implement the data catalog and lineage tracking from day one.
    • Embrace project-based isolation. Organize around business functions for clear cost allocation and security boundaries.
    • Document business logic. Use migration as an opportunity to capture undocumented knowledge in the business glossary and dataset descriptions.

    Conclusion

    Avanse’s migration from an external analytics application to Amazon SageMaker Unified Studio consolidated their analytics stack into a single integrated environment on AWS. By querying data directly in Amazon S3 instead of copying it into the external application, they alleviated their biggest operational bottleneck. Project-based isolation replaced a shared server model, giving each business unit independent compute and clear cost visibility. And centralized governance through SageMaker Catalog and IAM Identity Center gave their compliance team the audit trails they had been missing.

    The serverless, usage-based model means Avanse no longer pays for idle capacity. The lakehouse architecture supports new analytics patterns as they emerge, and native integration with AWS services, including generative AI through Amazon Bedrock, positions them to adopt new capabilities as their needs evolve.

    Next steps

    Start your analytics modernization journey by scheduling a 72-hour technical validation workshop. Contact your AWS account team to discuss your migration approach.

    For more information, see:

    Regional routing for AWS access portals: Implementing custom vanity domains for IAM Identity Center

    Post Syndicated from Georgi Baghdasaryan original https://aws.amazon.com/blogs/security/regional-routing-for-aws-access-portals-implementing-custom-vanity-domains-for-iam-identity-center/

    AWS IAM Identity Center provides a web-based access portal that gives your workforce a single place to view their AWS accounts and applications. With the recent launch of IAM Identity Center multi-Region replication, customers can replicate their IAM Identity Center instance across multiple AWS Regions to improve resilience and reduce latency for a globally distributed workforce. As a result, users have a dedicated access portal URL in each Region where Identity Center is replicated, and where administrators need a consistent way to manage these portals to ensure that each user reaches the right one.

    This post walks you through building a custom vanity domain (for example, aws.mycompany.com) that serves as a single, memorable entry point for access to IAM Identity Center through the AWS Management Console. The solution uses latency-based routing to automatically redirect users to their nearest healthy access portal endpoint and provides a mechanism to trigger failovers when a Regional Identity Center instance, or the broader AWS Region, is impaired. Because this solution operates outside of Identity Center—at the DNS and load balancer layer—users are transparently redirected to the appropriate Regional access portal URL. Note that the vanity domain itself will not appear in the browser’s address bar.

    This guide is structured in three progressive phases: a single-Region redirect, multi-Region latency routing, and automatic health-based failover. You can adopt each phase independently, depending on your organization’s needs.

    Note: While this guide focuses on IAM Identity Center access portal endpoints, the same approach using Amazon Route 53 latency-based routing, Application Load Balancer (ALB) redirects, and Amazon Application Recovery Controller (ARC) Region switch can be applied to build a custom vanity domain and intelligent routing layer for any other HTTP endpoint type.

    Background

    IAM Identity Center supports multiple access portal URL formats that resolve to the same web portal. The following table summarizes the supported formats in the standard AWS (classic) partition, along with their capabilities:

    Format IPv4 Dual-stack Multi-Region* Example
    https://{directoryId}.awsapps.com/start Yes No No https://d-1234567890.awsapps.com/start
    https://{alias}.awsapps.com/start Yes No No https://mycompany.awsapps.com/start
    https://{idcInstanceId}.{region}.portal.amazonaws.com Yes No Yes https://ssoins-1234567890.us-west-2.portal.amazonaws.com
    https://{idcInstanceId}.portal.{region}.app.aws ★ Yes Yes Yes https://ssoins-1234567890.portal.us-west-2.app.aws

    * Each Regional URL resolves only to its own Region’s portal instance and doesn’t fail over to another Region. Multi-Region here means the URL format is available in every Region where IAM Identity Center is replicated. To route users across Regions dynamically, use the vanity domain approach described in this post.

    Note: The ★ highlighted row (https://{idcInstanceId}.portal.{region}.app.aws) is the recommended URL format. It supports both dual-stack (IPv4 and IPv6) and IAM Identity Center multi-Region replication. The awsapps.com formats aren’t always available in newer Regions and don’t support multi-Region capabilities. In additional replicated Regions, the custom alias isn’t supported, and the awsapps.com parent domain isn’t available.

    Working with multiple Regional endpoints

    As you expand your IAM Identity Center footprint through multi-Region replication, each replicated Region provides a dedicated access portal URL—directing your users to the low-latency entry point closest to their location. A user connecting from Europe and one connecting from Asia Pacific each benefit from their respective Regional endpoint. To deliver the best experience, organizations need a consistent, centrally managed way to direct users to the correct Regional destination; there are a few common approaches you can use to achieve this.

    Customers typically start with a single Regional endpoint, which is straightforward to configure, but users in distant Regions experience higher latency, and a Regional incident can affect all users regardless of location. Others maintain per-Region bookmarks or configuration, which gives each user population the right endpoint but requires ongoing IT coordination and clear communication to users.

    Custom vanity domains give you full control over DNS routing, health checks, and failover of your access portal connections; all behind a single, brand-aligned domain name (for example, aws.mycompany.com) that users access. A vanity domain makes this start URL memorable and consistent for users, regardless of the underlying IAM Identity Center configuration – a single address to remember and share, compared to maintaining a separate bookmark for each Regional endpoint or managing a growing list of application tiles in your external identity provider. The rest of this guide walks you through how to deploy this solution step by step.

    Solution overview

    The solution builds a lightweight routing and redirect layer in front of the IAM Identity Center access portal Regional endpoints. The architecture has the following components:

    • AWS IAM Identity Center – Your existing Identity Center instance
    • Amazon Route 53 – Manages your vanity domain’s hosted zone, latency-based routing policy, and health checks
    • AWS Certificate Manager (ACM) – Issues and automatically renews TLS certificates for your vanity domain in each Region
    • Application Load Balancer (ALB) – Handles HTTP and HTTPS traffic, issuing 302 redirects to the appropriate Regional access portal endpoint
    • Amazon Application Recovery Controller (ARC) Region switch – Orchestrates Regional failovers by controlling Route 53 health check states, so traffic is automatically shifted away from an unhealthy Region

    This guide is structured in three progressive phases. You can adopt each phase incrementally based on your needs:

    • Phase 1: Sets up the vanity domain with a redirect to a single Regional access portal endpoint. Suitable for organizations with a single-Region Identity Center deployment.
    • Phase 2: Extends Phase 1 across multiple Regions with latency-based routing, so users are automatically directed to the nearest Regional endpoint. Requires IAM Identity Center multi-Region replication.
    • Phase 3: Adds an ARC Region switch for managed Regional failover. Without Phase 3, a Regional impairment requires manual DNS updates to redirect traffic. ARC automates this with rehearsable, controlled failover plans.

    Figure 1: Solution architecture for custom vanity domain routing with IAM Identity Center.

    When a user navigates to aws.mycompany.com, the following happens:

    1. Route 53 evaluates the latency records and routes traffic to the ALB in the lowest-latency healthy Region.
    2. The ALB terminates TLS using an ACM-managed certificate and issues a 302 redirect to the corresponding Regional Identity Center access portal URL.
    3. The user’s browser follows the redirect and loads the access portal directly. Subsequent authentication traffic flows between the browser and AWS—the ALB isn’t in the path.

    If you’ve implemented Phase 3, ARC controls Route 53 health check states for each Region. With this configuration, you can stop routing traffic to any Region considered unhealthy.

    Prerequisites

    Before you begin to build the solution, ensure you have the following in place:

    1. An existing top-level domain (TLD) (for example, mycompany.com).
    2. An AWS IAM Identity Center organization instance configured.
    3. For Phases 2 and 3, you need IAM Identity Center multi-Region replication configured with at least two Regions. See Setting up IAM Identity Center multi-Region replication for instructions.
    4. AWS Identity and Access Management (IAM) permissions on a dedicated networking or shared services account in your organization to manage Route 53, ACM, Amazon Elastic Compute Cloud (Amazon EC2), ALB (phase 1 and 2), and ARC (phase 3).

    Phase 1: Redirect to a single predefined access portal endpoint

    In this phase, you create the foundational infrastructure: a Route 53 hosted zone, an ACM-managed TLS certificate, and an internet-facing ALB that issues a 302 redirect to your Regional access portal URL. By the end, users who navigate to aws.mycompany.com will be seamlessly redirected to your Identity Center portal.

    Create a Route 53 hosted zone for your vanity domain

    The hosted zone holds the DNS records that control how aws.mycompany.com resolves. If your top-level domain (mycompany.com) is already registered in Route 53, you create a subdomain hosted zone. If it’s registered with another registrar, you create a public hosted zone and configure name server (NS) delegation manually.

    1. In the AWS Management Console, navigate to Route 53 and choose Hosted zones, then Create hosted zone.
    2. Enter your vanity domain in the Domain name field (for example, aws.mycompany.com).
    3. Select Public hosted zone as the type, then choose Create hosted zone.
    4. Note the four NS records that Route 53 creates for the new hosted zone. You will need these in the next step.

    Figure 2: Route 53 hosted zone details

    Delegate your subdomain from the parent domain

    To make Route 53 authoritative for aws.mycompany.com, you must add an NS record in the parent zone (mycompany.com) pointing to the name servers of the new hosted zone.

    • If mycompany.com is hosted in Route 53: Open the mycompany.com hosted zone, choose Create record, set the record name to aws, the type to NS, and paste the four NS values from the previous step. Choose Create records.
    • If mycompany.com is hosted elsewhere: Sign in to your registrar’s DNS management console and add an NS record for aws.mycompany.com using the four name server values from the previous step.

    Note: DNS propagation for NS delegation can take up to 48 hours, though it typically completes within a few minutes for Route 53-to-Route 53 delegation.

    Figure 3: Create a NS record type to delegate your subdomain from the parent domain

    Request an ACM certificate

    Your ALB requires a TLS certificate for aws.mycompany.com to serve HTTPS traffic. ACM provides free public certificates with automatic renewal.

    1. Go to the Certificate Manager console in the primary Region of IAM Identity Center (for example, us-east-2) and choose Request a certificate.
    2. Select Request a public certificate and choose Next.
    3. Enter your domain name (for example, aws.mycompany.com). Choose Add another name to this certificate and enter your Regional sub-domain (for example, us-east-2.aws.mycompany.com).
    4. Leave other options as defaults (Disable export, DNS validation – recommended, and key algorithm – RSA 2048) and choose Request.
    5. In the certificate details page, choose Create records in Route 53. ACM will automatically add the validation CNAME records to your hosted zone. The certificate status changes to Issued within a few minutes.

    Figure 4: Request an ACM certificate for your domain

    Create a security group for Identity Center ALB

    The security group needs to allow inbound HTTP and HTTPS traffic for both IPv4 and IPv6 from the public internet to make the load balancer reachable.

    1. Go to the Amazon EC2 console, navigate to Security Groups, and choose Create security group.
    2. Enter a Name (for example, identitycenter-global-domain-alb-sg-us-east-2) and Description. Add four rules by choosing Add Rule under Inbound Rules.
      1. Set Type to HTTP, and Source to Anywhere-IPv4 (0.0.0.0/0) and to Anywhere-IPv6 (::/0).
      2. Set Type to HTTPS, and Source to Anywhere-IPv4 (0.0.0.0/0) and to Anywhere-IPv6 (::/0).
    3. Choose Add Rule under Outbound Rules and set Type to All traffic and Source to Anywhere-IPv6 (::/0).
    4. Choose Create security group.

    Figure 5: ALB security group rules

    Create an ALB with an HTTP and HTTPS redirect rule

    The ALB is the component that performs the actual redirect to your IAM Identity Center access portal URL. The ALB listener accepts HTTPS requests on port 443 and responds with a 302 redirect to the appropriate Regional Identity Center access portal endpoint.

    1. Go to the Amazon EC2 console, navigate to Load Balancers, and choose Create load balancer. Select Application Load Balancer.
    2. Enter a name for your ALB (for example, identitycenter-redirect-alb).
    3. Configure basic settings: Set the scheme to Internet-facing, IP address type to Dualstack (or IPv4 if IPv6 isn’t supported by your virtual private cloud (VPC)), and select at least two Availability Zones. Ensure that the load balancer is operating in a VPC and subnets that are internet-facing.
    4. Under Security Groups choose the Security Group created in the previous step.
    5. Configure an HTTP listener: Add a listener on port 80 (HTTP) with Redirect to URL option. Choose URL parts and set Protocol to HTTPS, Port to 443, and status code to 302 (Found).

      Figure 6: Add an HTTP listener during ALB creation

    6. Configure an HTTPS listener: Add a listener on port 443 (HTTPS) with No pre-routing action (default) and Redirect to URL options. Choose Full URL and set the URL to your Regional Identity Center access portal endpoint (For example, https://ssoins-1234567890.portal.<your-region>.app.aws, for this blog the region is us-east-1). Set status code to 302 (Found).

      Figure 7: Add an HTTPS listener

    7. Under Default SSL/TLS certificate, select the ACM certificate you created in Step 3.

      Note: Make sure to select 302 – Found as the Status code. Selecting 301 – Permanently moved will result in browser caching the redirect URL which will prevent failovers from working correctly until the cache expires.

    Create Regional Route 53 records pointing to your ALB

    Create a DNS record in your hosted zone that resolves <your-region>.aws.mycompany.com to your ALB.

    1. Open your Route 53 hosted zone for aws.mycompany.com and choose Create record.
    2. Set the record name to the AWS Region name (For example: us-east-2) and the record type to A.
    3. Toggle Alias and in the drop down menu Route traffic to, select the alias target to Alias to Application and Classic Load Balancer, select your Region (For example:us-east-2), and select your ALB from the dropdown list.
    4. Leave routing policy as Simple routing, and select the Region (For example:us-east-2) and choose Create records.
    5. Repeat steps 1 through 4 to create AAAA record types.

    Figure 8: Route 53 record with simple routing policy

    Add latency-based routing configurations

    Finally, create a DNS record in your hosted zone that resolves aws.mycompany.com to your Regional Route 53 record.

    1. Open your Route 53 hosted zone for aws.mycompany.com and choose Create record.
    2. Keep the subdomain name for this record as empty, so aws.mycompany.com is the fully qualified record and set the record type to A.
    3. Enable alias: Set the Route traffic to Alias to another record in this hosted zone, and select the hosted zone you created earlier (us-east-2.aws.mycompany.com).
    4. Set Routing Policy to Latency and select the corresponding Region (us-east-2 in this example).
    5. Add a clear name for the Record ID, such as us-east-2--ipv4 as a differentiator and choose Create records.
    6. Repeat the steps 1 through 5 to create AAAA record types with us-east-2--ipv6 as the record ID.
    Figure 9: Route 53 record with latency-based routing

    Figure 9: Route 53 record with latency-based routing

    Test the configuration by navigating to https://aws.mycompany.com in a browser. You should be redirected to your Identity Center access portal. You can also validate using:
    curl -I https://aws.mycompany.com

    Expected response:

    HTTP/2 302

    location: https://ssoins-1234567890.portal.<your-region>.app.aws

    Tip: To deploy Phase 1 automatically, download the CloudFormation template from the Deploying with CloudFormation section below.

    Phase 2: Automatically route to the nearest Regional access portal endpoint

    Phase 2 extends the solution to support IAM Identity Center multi-Region replication by deploying an ALB in each replicated Region and configuring Route 53 latency-based routing. Users are automatically directed to the access portal in the Region that has the lowest network latency from their location, which matches the active-active behavior of the Identity Center access portal itself.

    Request ACM certificates in each additional Region

    Repeat the steps from Request an ACM Certificate for each additional Region (for example, us-west-2) where you’ve replicated IAM Identity Center.

    Create a security group and an ALB in each additional Region

    Repeat the steps from Create a security group for Identity Center ALB and Create an ALB with an HTTP and HTTPS redirect rule in each additional Region. In each ALB’s redirect rule, set the target URL to the access portal endpoint for that specific Region. For example:

    • us-east-2 ALB redirects to https://ssoins-1234567890.portal.us-east-2.app.aws
    • us-west-2 ALB redirects to https://ssoins-1234567890.portal.us.west-2.app.aws

    Create Regional and latency Route 53 records for the additional Region

    For each additional Region where you’ve deployed an ALB and replicated Identity Center, create Regional and latency A and AAAA records as outlined in Create Regional Route 53 records pointing to your ALB and Add latency-based routing configurations.

    Tip: To deploy Phase 2 automatically, download the CloudFormation template from the following Deploying with CloudFormation section.

    Phase 3: Regional failover using ARC Region switch

    Phase 3 introduces Amazon Application Recovery Controller (ARC) Region switch, a fully managed capability that you can use to plan, practice, and orchestrate Regional failovers with confidence. ARC Region switch vends Route 53 health checks directly as part of a Region switch plan. You attach these generated health checks to your Route 53 latency records, and ARC controls their healthy or unhealthy state during plan execution. You can further extend the solution to include custom automation triggered by Amazon CloudWatch alarms or synthetic canaries to update routing control state.

    We recommend creating your ARC Region switch plan in the primary Region of your IAM Identity Center for ease of discovery.

    Create an active-active instance of ARC Region switch plan

    Create an ARC Region switch plan that will orchestrate failovers between your IAM Identity Center Regions and auto-generate the Route 53 health checks you will reference in the next step.

    1. Open the Application Recovery Controller console and choose Region switch in the navigation pane. Select Create Region Switch Plan.
    2. Enter a Plan name (for example, idc-access-portal-failover) and an optional description. Choose Active/Active for Multi-Region recovery approach. Select the Regions where IAM Identity Center is replicated ,including the primary Region.
    3. In the Execution Permission section, enter the Amazon Resource Name (ARN) of the IAM role that ARC will use to update Route 53 health check states during plan execution. If you don’t have an existing role, choose Create a new role to have ARC create one automatically. See AWS Managed Policy: AmazonApplicationRecoveryControllerRegionSwitchPlanExecutionPolicy for information about required permissions.
    4. Choose Create Plan and proceed to Build workflows. Enter optional descriptions and choose Save and continue.

      Figure 10: Region switch plan

    5. Set the Workflow type to Activate and set the Region to the corresponding Region (us-east-2 or us-west-2). Within each workflow, choose Add step/Run in Sequence. Choose an execution block to Amazon Route 53 health check execution blog under Networking.
    6. Choose Add and edit. Enter a Step name (for example, Activate Route53 Record Set).
    7. Set the Hosted zone to the hosted zone ID for your aws.mycompany.com domain, and set the Record name to aws.mycompany.com.
    8. Expand Record set identifiers. Choose Add record set identifier and enter a unique identifier for the record set (for example, us-east-2--ipv4 and us-east2--ipv6) and select your Region. Add two record set identifiers (A and AAAA records) for each of your Regions.
    9. Choose Save step.
    10. Repeat steps 5 and 6 for Deactivate and choose Save the plan.

      Figure 11: Workflow builder

    11. Choose Save workflows.
    12. Select the newly created plan and choose the Monitoring tab. Note the IDs of the health checks created.

      Figure 12: IAM Identity Center access portal plan

    Update Route 53 record sets to reference ARC-managed health checks

    Associate the ARC-generated health check IDs with the latency-based A and AAAA records you created in Phase 1 and 2. Route 53 uses these health checks—which are now controlled by ARC—to determine which Regions are eligible for DNS resolution. Route 53 still uses latency to choose from the healthy Regions.

      1. Go to the Route 53 console and choose Hosted zones.
      2. Select the hosted zone for aws.mycompany.com.
      3. Find the latency-based A record for us-east-2 that you created in Phase 2, and choose Edit record.
      4. In the Health check section, enable Associate with a health check. In the Health check ID dropdown, select the ARC-generated health check for us-east-2 that you noted at the end of the preceding procedure. Note: Ignore the warning This health check ID doesn’t belong to this AWS account. Make sure you have copied it accurately to use it.
      5. Choose Save changes.
      6. Repeat steps 3, 4, and 5 for A and AAAA records for each of your IAM Identity Center Regions.

    Figure 13: Update Route53 record sets

    Validate the setup by performing a failover

    Validate the end-to-end configuration by executing a controlled failover. Because latency-based routing will always resolve aws.mycompany.com to us-east-2 for users in the primary geography, deactivating us-east-2 is the most direct way to confirm that Route 53 correctly fails over to us-west-2.

      1. Before executing the failover, confirm that aws.mycompany.com is resolving to the us-east-2:
        curl -I https://aws.mycompany.com
        Expected: A record pointing to the us-east-2 access portal URL (for example, https://ssoins-1234567890.portal.us-east-2.app.aws:443/).
      2. Go to the Amazon Application Recovery Controller console. In the left navigation pane, choose Region switch.
      3. Select your Region switch plan (idc-access-portal-failover) to open the plan details page.
      4. Choose Execute recovery.
      5. On the Execute plan page, select us-east-2 as the Region to fail out of.
      6. Select the Deactivate action and choose Start execution. ARC sets the us-east-2 health check to unhealthy. Route 53 stops resolving aws.mycompany.com to the us-east-2 ALB and routes traffic to us-west-2 instead.
      7. After a few seconds, confirm the failover has taken effect:
        curl -I https://aws.mycompany.com
        Expected: 302 redirect to the us-west-2 IAM Identity Center access portal URL
      8. To fail back, choose Execute plan again. Select us-east-2, select the Activate action and choose Start execution. ARC marks the us-east-2 health check healthy and Route 53 resumes routing traffic to that Region.

    Tip: To deploy Phase 3 automatically, download the CloudFormation template from the Deploying with CloudFormation section that follows.

    Deploying with CloudFormation

    As an alternative to the manual console steps described previously, we provide CloudFormation templates that you can download and deploy for each phase. Each template is self-contained and parameterized, so you only need to provide your environment-specific values (such as your vanity domain name, VPC, and subnet IDs). Download the templates from the following links:

    To deploy a template, navigate to the AWS CloudFormation console, choose Create stack, select Upload a template file, and upload the downloaded YAML file. Follow the prompts to provide parameter values and create the stack. For Phase 2, deploy the template once in each additional Region.

    Deploy all phases with a single scrip

    As an alternative to deploying each CloudFormation template individually, you can use the provided deploy.sh bash script to deploy all three phases in sequence. The script automates stack creation across your primary and additional Region. To get started, download the deployment package, then unzip the file into a local directory:

    wget https://aws-security-blog-content.s3.us-east-1.amazonaws.com/public/sample/3536-regional-routing-for-aws-access-portals/Vanity-domains-cfn.zip
    unzip  Vanity-domains-cfn.zip
    cd Vanity-domains-cfn

    Before running the script, open the deploy.sh file and update the following required parameters with your environment-specific values:

    • TLD – Your top-level domain (for example, mycompany.com)
    • TLD_HOSTED_ZONE_ID – The Route 53 hosted zone ID for your top-level domain
    • IDC_SUBDOMAIN – The Identity Center subdomain name (for example, aws)
    • IDC_INSTANCE_ID – Your IAM Identity Center instance ID (for example, ssoins-1234567890)
    • PRIMARY_REGION – The primary Region for your Identity Center instance (for example, us-east-2)
    • ADDITIONAL_REGIONS – The additional Region for multi-Region replication (for example, us-west-2)

    After updating the configuration, run the deployment script:

    ./deploy.sh

    The script deploys Phase 1 (single-Region redirect), Phase 2 (multi-Region latency-based routing), and Phase 3 (ARC Region switch failover) in order. Monitor the terminal output for stack creation progress and any errors.

    After completing the setup, you can integrate the vanity URL (for example, aws.mycompany.com) directly into your identity provider, such as Okta or Microsoft Entra ID, as a bookmark application or a chiclet URL. By configuring the vanity URL as the bookmark target, users who launch the application from their identity provider dashboard are always redirected to the nearest IAM Identity Center access portal endpoint through latency-based routing. If a Regional impairment occurs and a failover is necessary, administrators can execute an ARC Region switch to deactivate the impaired Region, and users will automatically be redirected to the active Identity Center endpoint without any change to the bookmark URL or end-user experience.

    Conclusion

    In this post, you learned how to build a custom vanity domain for an AWS IAM Identity Center access portal using Amazon Route 53, AWS Certificate Manager, Application Load Balancer, and an Amazon Application Recovery Controller (ARC) Region switch. The three-phase approach lets you start with a single-Region redirect, progressively add latency-based routing as your IAM Identity Center footprint grows with multi-Region replication, and then introduce an ARC Region switch to gain fully managed, rehearsable Regional failover.

    For more information about IAM Identity Center multi-Region replication, see the IAM Identity Center User Guide. For more resilience patterns, visit the AWS Architecture Blog posts about Resilience. If you have feedback about this post, submit comments in the Comments section below. If you have questions about this post, contact AWS Support.

    Resources


    Georgi Baghdasaryan

    Georgi Baghdasaryan

    Georgi is a Principal Engineer at Amazon Web Services, where he builds identity systems that help organizations securely manage access and authentication at scale. His broader focus is on reliable, high-impact infrastructure that enables customers to operate confidently in the cloud. Outside of work, Georgi enjoys experimenting with new matcha latte recipes and going on long bike rides.

    Sowjanya Rajavaram

    Sowjanya Rajavaram

    Sowjanya is a Sr Solutions Architect who specializes in Identity and Security in AWS. She works on helping customers of all sizes solve their identity and access management problems. She enjoys traveling and exploring new cultures and food.

    Author

    Laura Reith

    Laura is an Identity Solutions Architect at AWS, where she thrives on helping customers overcome security and identity challenges. In her free time, she enjoys wreck diving and traveling around the world.

    Access control with IAM Identity Center session tags

    Post Syndicated from Rashmi Iyer original https://aws.amazon.com/blogs/security/access-control-with-iam-identity-center-session-tags/

    As organizations expand their Amazon Web Services (AWS) footprint, managing secure, scalable, and cost-efficient access across multiple accounts becomes increasingly important. AWS IAM Identity Center offers a centralized, unified solution for managing workforce access to AWS accounts. It simplifies authentication, enhances security, and provides a seamless user sign-in experience to AWS services across diverse environments.

    By combining IAM Identity Center permission sets with session tags, organizations can unlock powerful capabilities for fine-grained access control and resource optimization. You can use session tags to pass dynamic attributes from your external identity provider into AWS, enabling more context-aware permissions and better cost visibility. This integration makes it possible to use advanced AWS features such as AWS Glue usage profiles and AWS Systems Manager Session Manager run as to enforce fine-grained access control, so that administrators can dynamically map permissions and runtime configurations based on user attributes passed during federated access.

    In this post, I demonstrate how session tags derived from directory group attributes in Microsoft Entra ID can deliver functionality equivalent to AWS Identity and Access Management (IAM) role tags. Using role tags, you can implement attribute-based access control (ABAC) using IAM Identity Center, while maintaining centralized and efficient access management. To demonstrate this, you can configure an AWS Glue usage profile, as described in Introducing AWS Glue usage profiles for flexible cost control, where session tags can be passed through Identity Center and an external identity provider like Microsoft Entra ID. This approach is extensible to other AWS services such as AWS Systems Manager Session Manager (run as) and can also be used with other identity providers.

    User authentication and IAM Identity Center Federation flow

    The following figure shows the architecture and workflow of the solution.

    Figure 1 – User authentication and federation flow between Microsoft Entra and AWS

    Figure 1 – User authentication and federation flow between Microsoft Entra and AWS

    The user authentication and federation flow includes the following steps:

    1. User accesses application using a browser.
    2. The enterprise application (configured in Azure) initiates authentication.
    3. Microsoft Entra ID handles sign-in.
    4. Users and groups are managed in Entra ID.
    5. A SAML trust is established between Entra ID and IAM Identity Center.
    6. SCIM provisioning syncs users and groups from Entra ID to AWS.
    7. Synced users and groups appear in Identity Center.
    8. Session tags are passed during SAML authentication.
      • Entra ID can send user attributes (department, role, cost center, project ID, and so on) as SAML attributes.
      • Identity Center consumes these as session tags, which are used for fine-grained access control and attribute-based access control inside AWS.
    9. Admins define permission sets for users and groups in Identity Center.
    10. Users get federated access to AWS using their Entra ID credentials.
    11. Users sign in through AWS Management Console or AWS Command Line Interface (AWS CLI) using those permissions.
    12. Access is granted to specific AWS accounts under AWS Organizations.

    Prerequisites

    To follow the steps in this post, you need the following prerequisites:

    1. An organization instance of IAM Identity Center enabled.
    2. A Microsoft Entra ID tenant. For more information, see Quickstart: Create a new tenant in Microsoft Entra ID.
    3. Access to an external identity provider such as Microsoft Entra ID to federate users into AWS. You can enable federated access between Microsoft Entra ID and IAM Identity Center by completing the steps in Configure SAML and SCIM with Microsoft Entra ID and IAM Identity Center. They include configuring SAML and SCIM integration between the two systems, testing the SAML connection to help ensure authentication is functioning correctly, and enabling SCIM synchronization to automate user and group provisioning.

    Solution implementation

    With the prerequisites in place, you’re ready to configure access control through IAM Identity center tags by using the following steps.

    1. Create an AWS Glue usage profile as described in Introducing AWS Glue usage profiles for flexible cost control in Create an AWS Glue usage profile. For the purposes of this post, create a profile named developer.
      1. On the AWS Management Console for AWS Glue, choose Cost management in the navigation pane.
      2. Choose Create usage profile.
      3. For Usage profile name, enter developer.
      4. Under Customize configurations for jobs, for Number of workers, for Default, enter 20.
      5. For Default worker type, select G.1X.
      6. For Allowed worker types, select G.1XG.2XG.4X, and G.8X.
      7. For Customize configurations for sessions, configure the same values.
      8. Choose Create usage profile.
      Figure 2 – Glue usage profile creation on the console

      Figure 2 – Glue usage profile creation on the console

    2. Create a custom permission set instead of using predefined ones. Attach the following AWS Managed Policies to the custom permission set:
      • AWSGlueConsoleFullAccess
      • IAMReadOnlyAccess

      Note: For fine-grained access control, you can create custom permission sets by combining AWS managed, customer managed, and inline policies in IAM. In this post, you use AWS managed policies with intentionally broad permissions for simplicity. In production, always follow the principles of least privilege and scope permissions appropriately.

      By default, when you create a permission set, the permission set isn’t provisioned (used in any AWS accounts). To provision a permission set in an AWS account, you must assign IAM Identity Center access to users or groups in the account and then apply the permission set to those users and groups. For more information, see Assign user or group access to AWS accounts.

    3. Configure user attributes in Microsoft Entra ID for access control in IAM Identity Center as described in Step 5 of Configure SAML and SCIM with Microsoft Entra ID and IAM Identity Center to set up ABAC. Add claim conditions for attribute mapping based on Entra ID group membership. Assign the developer value for users in a corresponding group. This enables logic such as Users in this group receive this profile or All users receive this profile. When using an AWS Glue profile and when making API calls to create AWS Glue resources, admins need to tag the user or role with glue:UsageProfile as the key and the profile name as the value.
    4. Next, sign in to the enterprise application that you created in the previous step, which has SCIM and SAML connections set up to IAM Identity Center:
      1. Sign in to Azure.
      2. Choose Enterprise applications.
      3. Select the application that you created
        Figure 3 – An enterprise application created in Microsoft Entra ID

        Figure 3 – An enterprise application created in Microsoft Entra ID

    5. When you’re signed in to your application, select Manage and then Single sign-on in the navigation pane, then select Attributes & Claims.
      Figure 4 – Attributes & Claims section in Microsoft Entra ID

      Figure 4 – Attributes & Claims section in Microsoft Entra ID

    6. Configure the key value pair that will used as session tags by selecting Add new claim.
      Figure 5 – Configuring attributes by adding a new claim

      Figure 5 – Configuring attributes by adding a new claim

    7. For Name, enter AccessControl:<AttributeName>. Replace <AttributeName> with the name of the attribute you are expecting in IAM Identity Center. For this example, use AccessControl:glue:UsageProfile.
    8. In Claim conditions set the following:
      • User type, select Members
      • Source, select Attribute.
      • Value, enter developer (without quotation marks).
      Figure 6 – Attribute claim addition in Microsoft Entra using group membership

      Figure 6 – Attribute claim addition in Microsoft Entra using group membership

    It’s important to note that the tags are being assigned based on group membership in Microsoft Entra ID. This approach lets you manage access and configuration dynamically without needing to set tags individually for each user. By assigning the tag to a Microsoft Entra ID group, anyone signing in to IAM Identity Center and who is in that group will automatically have the tag value applied to their session.

    Test the solution

    Now that the required configuration is complete, test the setup using the developer usage profile created as part of the Solution implementation section. Sign in as your user through Microsoft Entra ID using https://myapps.microsoft.com/ and verify the job creation using the following steps mentioned.

    To verify successful job creation:

    1. Open the AWS Glue console using the developer usage profile.
    2. In the navigation pane, choose ETL jobs.
    3. Select Script editor, then choose Create script.
    4. Create a new job using the values you want to validate.

    The green banner at the top of the screen should say Successfully updated job.

    Figure 7 – Successful AWS Glue job creation with configured parameters for the <em>developer</em> usage profile” width=”678″ height=”864″ class=”size-full wp-image-41907″></p>
<p id=Figure 7 – Successful AWS Glue job creation with configured parameters for the developer usage profile

    Validation using AWS CloudTrail

    Examine the AssumeRoleWithSAML event using AWS Cloudtrail. Use the following steps to verify the sequence of events.

    1. Navigate to the CloudTrail console.
    2. Select Event history.
    3. In the Lookup attributes dropdown, select Event name.
    4. Set the event name to AssumeRoleWithSAML.
    5. Open a relevant event and inspect the requestParameters section.
    6. Confirm that the expected session tags appear under PrincipalTags.
    Figure 8 – ABAC tags passed during the role assumption

    Figure 8 – ABAC tags passed during the role assumption

    Using session tags for other use cases

    The concepts discussed in this post can be extended to configure AWS Systems Manager Session Manager Run As support for federated users using session tags. By default, Session Manager launches sessions using a system-generated ssm-user account. For Linux instances, you can optionally configure sessions to run as a specific OS-level user through Session Manager preferences. You can configure your identity provider to pass the user attribute (AccessControl: SSMSessionRunAs and name of an OS user account for the key value during federation and the session will be tagged using the attribute value.

    Clean up

    To avoid incurring future charges, delete any resources created during this walkthrough if they’re no longer needed:

    1. Remove the IAM Identity Center instance and clean up the associated enterprise application in Microsoft Entra.
    2. Delete the AWS Glue usage profile.
    3. Remove any other AWS resources you provisioned for testing the solution.

    Conclusion

    In this post, you learned how to federate access to AWS using AWS IAM Identity Center and SAML 2.0 identity providers like Microsoft Entra ID, enabling a secure, scalable, and centralized approach to managing user access across multiple AWS accounts. By using permission sets, reserved IAM roles, and session tags, organizations can implement fine-grained ABAC without the complexity of managing individual IAM users or static roles.

    As cloud environments become more complex, adopting modern identity federation and ABAC through IAM Identity Center helps security teams maintain control while providing users with seamless, context-aware access to the resources they need.

    Resources

    If you have feedback about this post, submit comments in the Comments section below.

    Rashmi Iyer

    Rashmi Iyer

    Rashmi is a Senior Solutions Architect at AWS, supporting financial services enterprises in building secure, resilient, and scalable cloud architectures while ensuring compliance with industry best practices. With over 15 years of experience in the private telco cloud, she has designed and architected complex telecom solutions, specializing in the packet core domain, the backbone of mobile data networks.

    Scale fine-grained permissions across warehouses with Amazon Redshift and AWS IAM Identity Center

    Post Syndicated from Raghu Kuppala original https://aws.amazon.com/blogs/big-data/scale-fine-grained-permissions-across-warehouses-with-amazon-redshift-and-aws-iam-identity-center/

    Amazon Redshift is a fully managed, petabyte-scale cloud-based data warehouse that you can use to scale analytics workloads effortlessly. As organizations expand their analytics capabilities across multiple business units, they need streamlined approaches for defining and managing fine-grained permissions for each warehouse. Many organizations use external identity providers (IdPs) like Microsoft Entra ID, Okta, or Ping to manage workforce identities centrally and need streamlined data warehouse integration with consistent access controls. We address these challenges by introducing Amazon Redshift federated permissions with AWS IAM Identity Center integration so that you can define security policies once and automatically enforce them across the warehouses in your account.

    Amazon Redshift federated permissions are now supported with IAM Identity Center across multiple AWS Regions, where you can use identities from supported identity provider (IdP) such as Microsoft Entra ID, Okta, Ping Identity, or OneLogin across supported AWS Regions with IAM Identity Center. This enables you to align with business requirements including resiliency and proximity to users. You can now extend IAM Identity Center from your primary AWS Region to additional Regions of your choice based on your data residency requirements. In that region, you can get horizontal multi-warehouse scalability by adding new warehouses using Amazon Redshift federated permissions across multiple warehouses. With Redshift federated permissions, you define data permissions once from any Redshift warehouse in that region and automatically enforce them across all warehouses in the account in that region.

    This post provides a comprehensive technical walkthrough for implementing Amazon Redshift federated permissions with AWS IAM Identity Center to help achieve scalable data governance across multiple data warehouses. It demonstrates a practical architecture where an Enterprise Data Warehouse (EDW) serves as the producer data warehouse with centralized policy definitions, helping automatically enforce security policies to consuming Sales and Marketing data warehouses without manual reconfiguration. You will learn how to do the following:

    • Configure IAM Identity Center connections for both data sharing producers and consumers
    • Register Amazon Redshift serverless namespaces with AWS Glue Data Catalog
    • Set up trusted identity propagation (TIP)
    • Create and attach Dynamic data masking policies to help protect personally identifiable information (PII) like customer dates of birth
    • Implement row-level security policies to control data visibility based on user roles
    • Map IdP groups to Amazon Redshift database roles for seamless access management

    Prerequisites

    Before you begin, verify that you have the following:

    • An AWS account with admin role privileges
    • Assign data lake admin permissions to above admin role. For instructions, see Create a data lake administrator
    • Enable IAM Identity Center integration using the Lake Formation
    • Review the blog post to understand the setup process of AWS IAM Identity Center integration with Amazon Redshift Query Editor v2
    • IAM Identity Center enabled in your AWS account, with users and groups created as listed under Solution overview section of User access (figure 2)
    • As an Amazon Redshift superuser, grant CONNECT, CREATE TABLE, INSERT, SELECT, and sys:secadmin permissions to AWSIDC:awssso-admin database role
    • An IAM role for IAM Identity Center access:
      • Step 1:Create an IAM policy for Amazon Redshift access. To integrate Amazon Redshift with IAM Identity Center, create an IAM policy (for example, aws-idc-policy) in the account where your Amazon Redshift data warehouse exists:
        {
          "Version": "2012-10-17",
          "Statement": [
            {
              "Sid": "VisualEditor0",
              "Effect": "Allow",
              "Action": [
                "redshift:DescribeQev2IdcApplications",
                "redshift-serverless:ListNamespaces",
                "redshift-serverless:ListWorkgroups",
                "redshift-serverless:GetWorkgroup"
              ],
              "Resource": [
                "arn:aws:redshift-serverless:<AWS Region>:<AWS Account ID>:workgroup/*",
                "arn:aws:redshift-serverless:<AWS Region>:<AWS Account ID>:namespace/*"
              ]
            },
            {
              "Sid": "VisualEditor1",
              "Effect": "Allow",
              "Action": [
                "sso:DescribeApplication",
                "sso:DescribeInstance"
              ],
              "Resource": [
                "arn:aws:sso:::instance/<IAM Identity Center Instance ID>",
                "arn:aws:sso::<AWS Account ID>:application/<IAM Identity Center Instance ID>/*"
              ]
            }
          ]
        }

      • Step 2: Create the IAM role. Create an IAM role (Amazon Redshift – Customizable) in the account where your Amazon Redshift data warehouse exists (for example, IAMIDCRedshiftRole).
      • Step 3: Attach IAM policies to the role. Attach the following two IAM policies to the previously mentioned role:
      • Step 4: Update the trust relationships. Update the trust relationships for this role with the following:
        {
          "Version": "2012-10-17",
          "Statement": [
            {
              "Effect": "Allow",
              "Principal": {
                "Service": "redshift.amazonaws.com"
              },
              "Action": [
                "sts:AssumeRole",
                "sts:SetContext"
              ]
            }
          ]
        }

        Note: AmazonRedshiftFederatedAuthorization is a managed policy that provides the necessary permissions for running queries with Amazon Redshift federated authorization.

    • Attach above IAMIDCRedshiftRole IAM role to all Redshift serverless endpoints

    Solution overview

    The following architecture diagram demonstrates federated permissions in a multi-warehouse environment, enabling scalable data governance across Amazon Redshift warehouses by automatically enforcing security policies.

    Figure 1 : Sample architecture diagram

    Figure 1: Sample architecture diagram

    User access

    Users can access data warehouses through Amazon Redshift Query Editor v2, third-party SQL editors (such as DBeaver and SQL Workbench), or custom client applications. The access methods help provide consistent security enforcement.

    Figure 2: Solution overview flow

    Figure 2: Solution overview flow

    AWS IAM Identity Center integration

    IAM Identity Center provides centralized authentication with single sign-on capabilities and automatically assigns role-based permissions based on organizational roles. This identity federation links corporate identities directly to AWS resources, making sure that authentication occurs at the identity layer before warehouse access.

    Multi-warehouse architecture

    This architecture uses three distinct data warehouses that serve different business functions while sharing centralized security policies.

    Enterprise Data Warehouse (EDW)

    The EDW serves as the central repository for enterprise data. In this architecture, customer and product data are stored in the Customer Profile Database (CPD), where administrators define two critical security policies:

    • Dynamic data masking (DDM) – Masks sensitive customer Date of Birth (DOB) fields for both Sales Analyst and Marketing Analyst roles, helping protect personally identifiable information (PII) while allowing analytical work
    • Row-level security (RLS) – Controls product visibility based on user roles. Sales Analysts view only launched products, while Marketing Analysts view both launched and planned products

    The EDW registers with the AWS Glue Data Catalog, creating a unified metadata repository that makes data discoverable across the warehouses in the account. This registration establishes the foundation for federated permissions, enabling automatic policy propagation.

    Sales data warehouse

    When Sales Analysts query customer and product tables, the system automatically enforces policies defined in the EDW through federated permissions. The registered namespace from the EDW automatically mounts as an external database, alleviating the need to recreate or reattach policies. Customer DOB fields appear masked, and only launched products are visible without additional configurations.

    Marketing data warehouse

    The Marketing Data Warehouse automatically inherits and enforces EDW security policies. Customer DOB fields remain masked to help protect PII, but with RLS policies, Marketing Analysts can view both launched and planned products. This provides the broader visibility needed for marketing planning. This differentiated access control is automatically enforced based on user roles.

    Walkthrough

    In this walkthrough, you create two Amazon Redshift IAM Identity Center (IDC) connections:

    1. Data sharing producer identity center connection – Assigned to the edw-wg Amazon Redshift serverless workgroup
    2. Data sharing consumer identity center connection – Assigned to the cpd-sales-wg and cpd-marketing-wg Amazon Redshift serverless workgroups

    Set up IDC connections for Amazon Redshift federated permissions

    In this section, you configure the IAM Identity Center connections that enable federated authentication across your warehouses. You will create separate connections for the producer (policy-defining) warehouse and consumer warehouses.

    Configure Amazon Redshift data sharing producer IDC connection

    To create the producer IDC connection:

    1. Open the Amazon Redshift Serverless console.
    2. Choose IAM Identity Center connections by expanding the hamburger menu.
    3. Choose Create application.
    4. Verify that you see “Amazon Redshift connected to IAM Identity Center”, and then choose Next.
    5. Configure the connection properties:
      • For IAM Identity Center display name, enter a name.
      • For Managed application name, enter rs-multicluster-producer.
      • For Identity provider namespace, choose AWSIDC.
      • For IAM role for IAM Identity Center access, choose the TIP IAM role that you created.
      • For Query editor v2 application, choose Enable the query editor v2 application.
      • For IAM Identity Center application type, choose Configure Amazon Redshift federated permissions using AWS IAM Identity Center (Recommended).
      • Choose Next.
    6. For Configure client connections that use third-party IdPs, choose No.
    7. Choose Next.
    8. Verify that the configuration details match your inputs and then choose Create Application.
    Figure 3: Data sharing producer IDC connection

    Figure 3: Data sharing producer IDC connection

    Configure data sharing consumer IDC connection

    To create the consumer IDC connection:

    1. Open the Amazon Redshift Serverless console.
    2. Choose IAM Identity Center connections by expanding the hamburger menu.
    3. Choose Create application.
    4. Verify that you see “Amazon Redshift connected to IAM Identity Center”, and then choose Next.
    5. Configure the connection properties:
      • For IAM Identity Center display name, enter a name.
      • For Managed application name, enter rs-multicluster-consumer.
      • For Identity provider namespace, choose AWSIDC.
      • For IAM role for IAM Identity Center access, choose the TIP IAM role that you created.
      • For Query editor v2 application, you will see the notification “You already have a query editor v2 application.”
      • For IAM Identity Center application type, deselect Configure Amazon Redshift federated permissions using AWS IAM Identity Center (Recommended).
      • For Trusted identity propagation, choose AWS Lake Formation access grants and Amazon Redshift Connect.
      • Choose Next.
    6. For Configure client connections that use third-party IdPs, choose No.
    7. Choose Next.
    8. Verify that the configuration details match your inputs, and then choose Create Application.
    9. Add your required users or groups to the IDC application for Amazon Redshift data sharing consumers.
    Figure 4: Data sharing consumer IDC connection

    Figure 4: Data sharing consumer IDC connection

    Configure Amazon Redshift data sharing producer IDC connection for Amazon Redshift serverless namespace

    To register the edw-ns namespace with federated permissions:

    1. Open the Amazon Redshift Serverless Namespace console.
    2. Choose your Amazon Redshift Serverless namespace.
    3. Choose Actions, and then select Register with AWS Glue Data Catalog.
    4. Choose Register with Amazon Redshift federated permissions.
    5. Choose Amazon Redshift federated permissions using AWS IAM Identity Center.
    6. Choose Register.
    Figure 5: Amazon Redshift data warehouse registration with Glue Data Catalog

    Figure 5: Amazon Redshift data warehouse registration with Glue Data Catalog

    Figure 6: Amazon Redshift data warehouse registration with Glue Data Catalog

    Figure 6: Amazon Redshift data warehouse registration with Glue Data Catalog

    Note: IAM Identity Center managed application ARN Data sharing producer IDC connection created would be used.

    Configure Amazon Redshift data sharing consumer IDC connection for existing serverless namespace

    For cpd-sales-wg and cpd-marketing-wg serverless workgroups, gather the following information from your registered IAM Identity Center connection:

    • IAM Identity Center display name
    • Identity provider namespace
    • IAM Identity Center managed application ARN
    • IAM role for IAM Identity Center access

    Run the following SQL command as a database administrator to enable the integration:

    CREATE IDENTITY PROVIDER "<IAM Identity Center display name>" TYPE AWSIDC
    NAMESPACE '<Identity provider namespace>'
    APPLICATION_ARN '<IAM Identity Center managed application ARN>'
    IAM_ROLE '<IAM role for IAM Identity Center access>';

    To modify an existing identity provider, use the ALTER IDENTITY PROVIDER command:

    ALTER IDENTITY PROVIDER "<IAM Identity Center display name>"
    NAMESPACE '<Identity provider namespace>';
    ALTER IDENTITY PROVIDER "<IAM Identity Center display name>"
    IAM_ROLE default | '<IAM role for IAM Identity Center access>';

    Data preparation and access setup from producer

    In this section, you create the customer and product tables, load sample data, create DDM and RLS policies, attach the policies to database roles and grant SELECT permissions to the roles.

    Prepare data on EDW

    Connect to the EDW data warehouse as an IDC Admin user and run the following SQL commands.

    Create the product table:

    CREATE TABLE product (
      product_id VARCHAR(16) NOT NULL,
      product_desc VARCHAR(200),
      current_price NUMERIC(7,2),
      wholesale_cost NUMERIC(7,2),
      category_desc VARCHAR(50),
      launch_status VARCHAR(50)
    );

    Insert sample product data:

    INSERT INTO product 
    VALUES 
      ('AAAAAAAAAFNPEAAA','At least concerned authors adopt just brown, federal',7.12,4.12,'Jewelry','launched'),
      ('AAAAAAAAOAAGDAAA','Complex services may not find totally changing accountants. Tiny, available ministers could not know always systems. Hot, male speakers discer',8.08,5.49,'Shoes','planned'),
      ('AAAAAAAAMJJMCAAA','Rows could prevent political, old duties. Just international stairs would regret police. Conditions discard always interesting, warm years. Present jobs shall take nearby relatively dreadful',8.18,5.31,'Jewelry','launched'),
      ('AAAAAAAAKLBLBAAA','Suddenly external sentences believe then by the assets. Simultaneously young feet could not probe separately shortly new men. Forms work again individuals. Images',17.96,7.9,'Shoes','launched'),
      ('AAAAAAAAMBKMCAAA','Clubs see finally materials. Significant objectives sell fairly left, civil power',3.18,3.84,'Books','launched'),
      ('AAAAAAAACPCAAAAA','Perhaps past preferences tell rather to a accounts. Very common feet can command never available final years; minutes expect recent, due employers. Altogether english shoes',9.84,0.19,'Electronics','planned'),
      ('AAAAAAAAFOIABAAA','More responsible characters go left factors. Championships shall stand twice new, important shows. Books could receive too able, national pounds. Central',3.55,2.2,'Books','launched'),
      ('AAAAAAAAKGBIAAAA','High, political changes shall not',9.55,5.25,'Electronics','launched');

    Create the customer table:

    CREATE TABLE customer (
      customer_id VARCHAR(16),
      first_name VARCHAR(20),
      last_name VARCHAR(30),
      date_of_birth VARCHAR(32),
      birth_country VARCHAR(20),
      email_address VARCHAR(50)
    );

    Insert sample customer data:

    INSERT INTO customer
    VALUES
      ('AAAAAAAALAMKHGBA','Regina','Coleman','1926-12-17','GAMBIA','[email protected]'),
      ('AAAAAAAAMCMKHGBA','John','Bell','1980-01-07','PAPUA NEW GUINEA','[email protected]'),
      ('AAAAAAAANNMKHGBA','Jacqueline','Pierre','1951-12-18','SAMOA','[email protected]'),
      ('AAAAAAAANFNKHGBA','Frank','Mackay','1992-03-19','HONG KONG','[email protected]'),
      ('AAAAAAAAOGNKHGBA','Anthony','Miller','1948-02-26','ALGERIA','[email protected]'),
      ('AAAAAAAACPOKHGBA','Bradley','Sawyer','1956-12-25','ZAMBIA','[email protected]'),
      ('AAAAAAAAOIPKHGBA','Robert','Carter','1951-01-01','UNITED STATES','[email protected]'),
      ('AAAAAAAALJPKHGBA','Ola','High','1980-11-19','SUDAN','[email protected]');

    Create DDM and RLS policies

    Create the masking policy for customer date of birth:

    CREATE MASKING POLICY mask_cust_dob  
    WITH (date_of_birth VARCHAR(32))  
    USING (sha2(date_of_birth, 256)::TEXT);

    Create RLS policies for product launch status:

    CREATE RLS POLICY product_launch_status  
    WITH (launch_status VARCHAR(50))   
    USING (launch_status = 'launched');
      
    CREATE RLS POLICY product_launch_status_all
    WITH (launch_status VARCHAR(50))   
    USING (launch_status IN ('launched','planned'));

    Create Amazon Redshift DB roles for Sales and Marketing groups

    Create the database roles:

    CREATE ROLE "AWSIDC:awssso-sales";
    CREATE ROLE "AWSIDC:awssso-marketing";

    Attach masking policies

    Attach the masking policy to both roles:

    ATTACH MASKING POLICY mask_cust_dob  
    ON dev.public.customer (date_of_birth)  
    TO ROLE "AWSIDC:awssso-marketing";
    ATTACH MASKING POLICY mask_cust_dob  
    ON dev.public.customer (date_of_birth)  
    TO ROLE "AWSIDC:awssso-sales";

    Attach RLS policies and enable RLS on product table

    Attach the RLS policies and enable row-level security:

    ATTACH RLS POLICY product_launch_status  
    ON dev.public.product  
    TO ROLE "AWSIDC:awssso-sales"; 
    ATTACH RLS POLICY product_launch_status_all  
    ON dev.public.product  
    TO ROLE "AWSIDC:awssso-marketing";
    ALTER TABLE dev.public.product ROW LEVEL SECURITY ON;

    Grant access to tables to roles

    Grant SELECT permissions to both roles:

    GRANT SELECT ON dev.public.customer TO ROLE "AWSIDC:awssso-sales";
    GRANT SELECT ON dev.public.customer TO ROLE "AWSIDC:awssso-marketing";
    GRANT SELECT ON dev.public.product TO ROLE "AWSIDC:awssso-sales"; 
    GRANT SELECT ON dev.public.product TO ROLE "AWSIDC:awssso-marketing";

    Connect to SALES data warehouse using IAM Identity Center

    To connect as a Sales Analyst:

    1. Connect to cpd-sales-wg using the IAM Identity Center connection type as user sales-analyst, and then choose Continue.
    2. Choose sales-analyst, and then choose Next.
    3. Enter your password, and then choose Sign in.
    4. Enter your MFA code, and then choose Sign in.

    You are now connected to Amazon Redshift Query Editor V2 with a successful connection to cpd-sales-wg as sales-analyst.

    Figure 7: Connect to Sales data warehouse as IDC user

    Figure 7: Connect to Sales data warehouse as IDC user

    Query shared data as Sales Analyst

    Query the customer table with dynamic data masking applied:

    SELECT * FROM "dev@edw-ns"."public"."customer";

    You can successfully access the customer table, but the sensitive information in the date_of_birth column is encrypted.

    Figure 8: Result set of customer table

    Figure 8: Result set of customer table

    Query the product table with row-level security enabled:

    SELECT * FROM "dev@edw-ns"."public"."product";

    You can successfully access the product table, but only view data for products with a launch_status value of launched.

    Figure 9: Result set of product table

    Figure 9: Result set of product table

    Note: To connect to the data sharing producer onboarded to Amazon Redshift federated permissions as an IDC user, a superuser is required to provide a CONNECT privilege to the IDC user trying to connect. For more information about how to grant the CONNECT privileges to the user, see Connect privileges in the Amazon Redshift Database Developer Guide.

    Connect to Marketing data warehouse using IAM Identity Center

    To connect as a Marketing Analyst:

    1. Connect to cpd-marketing-wg using the IAM Identity Center connection type as user marketing-analyst, and then choose Continue.
    2. Choose marketing-analyst, and then choose Next.
    3. Enter your password, and then choose Sign in.
    4. Enter your MFA code, and then choose Sign in.

    You are now connected to Amazon Redshift Query Editor V2 with a successful connection to cpd-marketing-wg as marketing-analyst.

    Figure 10: Connect to Marketing data warehouse as IDC user

    Figure 10: Connect to Marketing data warehouse as IDC user

    Query shared data as Marketing Analyst

    Query the customer table with dynamic data masking applied:

    SELECT * FROM "dev@edw-ns"."public"."customer";

    You can successfully access the customer table, but the sensitive information in the date_of_birth column is encrypted.

    Figure 11: Result set of customer table

    Figure 11: Result set of customer table

    Query the product table with row-level security enabled:

    SELECT * FROM "dev@edw-ns"."public"."product";

    You can successfully access the product table and view data for products with launch_status values of both launched and planned.

    Figure 12: Result set of product table

    Figure 12: Result set of product table

    Additional resources

    For more information about implementing federated permissions in your environment, see the following resources:

    AWS Documentation

    AWS Blogs

    AWS Demo

    Key benefits

    • Reduced administrative overhead – Centralized policy management removes manual replication
    • Consistent security enforcement – Policies apply uniformly across the warehouses and access methods
    • Seamless identity integration – Single sign-on with existing identity providers through trusted identity propagation and role-based access control

    Conclusion

    This post showed you how Amazon Redshift federated permissions with AWS IAM Identity Center integration helps streamline multi-warehouse data governance by centralizing security policy management. You define dynamic data masking and row-level security policies once in a central Enterprise Data Warehouse, and they automatically enforce across the connected data warehouses in the same account and Region.


    About the authors

    Raghu Kuppala

    Raghu Kuppala

    Raghu is an Analytics Specialist Solutions Architect experienced working in the databases, data warehousing, and analytics space. Outside of work, he enjoys trying different cuisines and spending time with his family and friends.

    Satesh Sonti

    Satesh Sonti

    Satesh is a Principal Specialist Solutions Architect based out of Atlanta, specializing in building enterprise data platforms, data warehousing, and analytics solutions. He has over 20 years of experience in building data assets and leading complex data platform programs for banking and insurance clients across the globe.

    Sandeep Adwankar

    Sandeep Adwankar

    Sandeep is a Senior Product Manager with Amazon SageMaker Lakehouse. Based in the California Bay Area, he works with customers around the globe to translate business and technical requirements into products that help customers improve how they manage, secure, and access data.

    Sumukh Bapat

    Sumukh Bapat

    Sumukh is a Software Engineer at AWS. He works on improving customer experience for Amazon Redshift by solving complex problems in authentication, connectivity, and security. His work focuses on identity management, secure access, and distributed database systems.

    Praveen Kumar Ramakrishnan

    Praveen Kumar Ramakrishnan

    Praveen is a Senior Software Engineer at AWS. He has nearly 20 years of experience spanning various domains including filesystems, storage virtualization and network security. At AWS, he focuses on enhancing the Redshift data security.

    Ashish Ghodke

    Ashish Ghodke

    Ashish is a Software Engineer at Amazon Web Services, where he works on identity and access management systems for large-scale cloud services like Amazon Redshift. His work focuses on building secure authentication and single sign-on solutions for distributed systems. He is passionate about distributed systems, cloud security, and building reliable infrastructure at scale.

    AWS IAM Identity Center now supports multi-Region replication for AWS account access and application use

    Post Syndicated from Channy Yun (윤석찬) original https://aws.amazon.com/blogs/aws/aws-iam-identity-center-now-supports-multi-region-replication-for-aws-account-access-and-application-use/

    Today, we’re announcing the general availability of AWS IAM Identity Center multi-Region support to enable AWS account access and managed application use in additional AWS Regions.

    With this feature, you can replicate your workforce identities, permission sets, and other metadata in your organization instance of IAM Identity Center connected to an external identity provider (IdP), such as Microsoft Entra ID and Okta, from its current primary Region to additional Regions for improved resiliency of AWS account access.

    You can also deploy AWS managed applications in your preferred Regions, close to application users and datasets for improved user experience or to meet data residency requirements. Your applications deployed in additional Regions access replicated workforce identities locally for optimal performance and reliability.

    When you replicate your workforce identities to an additional Region, your workforce gets an active AWS access portal endpoint in that Region. This means that in the unlikely event of an IAM Identity Center service disruption in its primary Region, your workforce can still access their AWS accounts through the AWS access portal in an additional Region using already provisioned permissions. You can continue to manage IAM Identity Center configurations from the primary Region, maintaining centralized control.

    Enable IAM Identity Center in multiple Regions
    To get started, you should confirm that the AWS managed applications you’re currently using support customer managed AWS Key Management Service (AWS KMS) key enabled in AWS Identity Center. When we introduced this feature in October 2025, Seb recommended using multi-Region AWS KMS keys unless your company policies restrict you to single-Region keys. Multi-Region keys provide consistent key material across Regions while maintaining independent key infrastructure in each Region.

    Before replicating IAM Identity Center to an additional Region, you must first replicate the customer managed AWS KMS key to that Region and configure the replica key with the permissions required for IAM Identity Center operations. For instructions on creating multi-Region replica keys, refer to Create multi-Region replica keys in the AWS KMS Developer Guide.

    Go to the IAM Identity Center console in the primary Region, for example, US East (N. Virginia), choose Settings in the left-navigation pane, and select the Management tab. Confirm that your configured encryption key is a multi-Region customer managed AWS KMS key. To add more Regions, choose Add Region.

    You can choose additional Regions to replicate the IAM Identity Center in a list of the available Regions. When choosing an additional Region, consider your intended use cases, for example, data compliance or user experience.

    If you want to run AWS managed applications that access datasets limited to a specific Region for compliance reasons, choose the Region where the datasets reside. If you plan to use the additional Region to deploy AWS applications, verify that the required applications support your chosen Region and deployment in additional Regions.

    Choose Add Region. This starts the initial replication whose duration depends on the size of your Identity Center instance.

    After the replication is completed, your users can access their AWS accounts and applications in this new Region. When you choose View ACS URLs, you can view SAML information, such as an Assertion Consumer Service (ACS) URL, about the primary and additional Regions.

    How your workforce can use an additional Region
    AWS Identity Center supports SAML single sign-on with external IdPs, such as Microsoft Entra ID and Okta. Upon authentication in the IdP, the user is redirected to the AWS access portal. To enable the user to be redirected to the AWS access portal in the newly added Region, you need to add the additional Region’s ACS URL to the IdP configuration.

    The following screenshots show you how to do this in the Okta admin console:

    Then, you can create a bookmark application in your identity provider for users to discover the additional Region. This bookmark app functions like a browser bookmark and contains only the URL to the AWS access portal in the additional Region.

    You can also deploy AWS managed applications in additional Regions using your existing deployment workflows. Your users can access applications or accounts using the existing access methods, such as the AWS access portal, an application link, or through the AWS Command Line Interface (AWS CLI).

    To learn more about which AWS managed applications support deployment in additional Regions, visit the IAM Identity Center User Guide.

    Things to know
    Here are key considerations to know about this feature:

    • Consideration – To take advantage of this feature at launch, you must be using an organization instance of IAM Identity Center connected to an external IdP. Also, the primary and additional Regions must be enabled by default in an AWS account. Account instances of IAM Identity Center, and the other two identity sources (Microsoft Active Directory and IAM Identity Center directory) are presently not supported.
    • Operation – The primary Region remains the central place for managing workforce identities, account access permissions, external IdP, and other configurations. You can use the IAM Identity Center console in additional Regions with a limited feature set. Most operations are read-only, except for application management and user session revocation.
    • Monitoring – All workforce actions are emitted in AWS CloudTrail in the Region where the action was performed. This feature enhances account access continuity. You can set up break-glass access for privileged users to access AWS if the external IdP has a service disruption.

    Now available
    AWS IAM Identity Center multi-Region support is now available in the 17 enabled-by-default commercial AWS Regions. For Regional availability and a future roadmap, visit the AWS Capabilities by Region. You can use this feature at no additional cost. Standard AWS KMS charges apply for storing and using customer managed keys.

    Give it a try in the AWS Identity Center console. To learn more, visit the IAM Identity Center User Guide and send feedback to AWS re:Post for Identity Center or through your usual AWS Support contacts.

    Channy

    Federate access to Amazon SageMaker Unified Studio with AWS IAM Identity Center and Ping Identity

    Post Syndicated from Raghavarao Sodabathina original https://aws.amazon.com/blogs/big-data/federate-access-to-amazon-sagemaker-unified-studio-with-aws-iam-identity-center-and-ping-identity/

    With an identity provider (IdP), you can manage your user identities outside of AWS and give these external user identities permissions to use AWS resources in your AWS accounts. External IdPs, such as Ping Identity, can integrate with AWS IAM Identity Center to be the source of truth for Amazon SageMaker Unified Studio. SageMaker Unified Studio also supports trusted identity propagation for SQL analytics, including Amazon Athena and Amazon Redshift.

    SageMaker Unified Studio provides an integrated experience to use your data and tools for analytics and AI. You can use SageMaker Unified Studio to discover your data and put it to work using familiar AWS analytics and machine learning (ML) services for model development, generative AI, big data processing, and SQL analytics, assisted by Amazon Q Developer. By default, SageMaker domains support AWS Identity and Access Management (IAM) user credentials. You can also enable access to SageMaker domains in SageMaker Unified Studio for users with single sign-on (SSO) with IAM Identity Center and direct SAML integration with SageMaker Unified Studio.

    Users can access SageMaker Unified Studio with their existing corporate credentials. With IAM Identity Center, administrators can connect their existing external IdPs and continue to manage users and groups in those existing identity systems, which can then be synchronized with IAM Identity Center using System for Cross-domain Identity Management (SCIM).In this post, we show how to set up workforce access with SageMaker Unified Studio using Ping Identity as an external IdP with IAM Identity Center.

    In this post, we show how to set up workforce access with SageMaker Unified Studio using Ping Identity as an external IdP with IAM Identity Center.

    Solution overview

    We walk through the following high-level steps to implement this solution:

    1. Enable IAM Identity Center.
    2. Create a SageMaker Unified Studio domain.
    3. Set up your IdP (for this example, Ping Identity).
    4. Connect Ping Identity and IAM Identity Center.
    5. Set up automatic provisioning of users and groups in IAM Identity Center.
    6. Configure SageMaker Unified Studio SSO user access.

    Prerequisites

    For this walkthrough, you should have the following prerequisites:

    • An AWS account with IAM Identity Center enabled. It is recommended to use an organization-level IAM Identity Center instance for best practices and centralized identity management across your AWS organization.
    • A Ping Identity account.
    • A browser with network connectivity to Ping Identity and SageMaker Unified Studio.

    Enable IAM Identity Center

    To enable IAM Identity Center, follow the instructions in Enable IAM Identity Center.

    Create a SageMaker Unified Studio domain

    To create a SageMaker Unified Studio domain, refer to the instructions in Create a Amazon SageMaker Unified Studio domain – manual setup.

    On the SageMaker console, go to the domain details and copy the Amazon Resource Name (ARN) under Domain ARN. You will use this value when you add your trust policy and when you connect your IAM IdP to your Ping Identity instance.

    Create a SageMaker Unified Studio domain

    Set up your IdP (Ping Identity)

    In this section, we walk through the procedure to set up your IdP (for this example, Ping Identity).

    Create an environment in Ping Identity

    Complete the following steps to create an environment for Ping Identity:

    1. Log in to your Ping Identity account.
    2. Choose Create Environment.
    3. Choose Create a Customer Solution.
    4. In the Tailor your experiences pop-up, choose Skip.
      Create an environment in Ping Identity

    Create a group in Ping Identity

    Complete the following steps to create a group in Ping Identity:

    1. On the Environments page, choose Manage Environments.
    2. In the navigation pane, choose Directory, then choose Groups.
    3. Choose the plus sign to add a group.
    4. For Group Name, enter sagemaker
    5. For Description, enter an optional description (for example, Amazon SageMaker Unified Studio).
    6. For Population, choose Default.
    7. Choose Save.
      Create a group in Ping Identity
    8. On the Roles tab for the sagemaker group, assign the Environment Admin role to the group.
      Assigning roles for the sagemaker group

    Create a user in Ping Identity

    Complete the following steps to create a user:

    1. In the navigation pane, choose Directory, then choose Users.
    2. Choose the plus sign to create a user.
    3. Provide values for Given name, Family name, Username, and Email.
    4. For Password, choose First time password.
    5. Choose Save.

    You can add more users as needed.

    Assign group to user

    Complete the following steps to assign your group to your user:

    1. In the navigation pane, choose Directory, then choose Groups.
    2. Choose the sagemaker group you created.
    3. On the Users tab, choose the plus sign to add a user.
    4. Add the user you created.

    Connect Ping Identity and IAM Identity Center

    To configure the integration between Ping Identity and IAM Identity Center, you need access to both management consoles. Although Ping Identity’s application catalog includes IAM Identity Center, we recommend configuring a standard SAML application for greater control over settings and attribute mappings.

    Complete the following steps:

    1. Go to the Ping Identity environment you created and choose Applications in the navigation pane.
    2. Choose the plus sign to add an application:
      1. For Application name, enter a name (for this example, we use unifiedstudio).
      2. For Description, enter an optional description.
      3. For Application Type, choose SAML Application.
      4. Choose Configure.

      Creating a SAML app integration in Ping Identity

    3. Sign in to the IAM Identity Center console as a user with administrative privileges.
    4. In the navigation pane, choose Settings to update your settings:
      1. On the Identity source tab, choose Change identity source on the Actions dropdown menu.
        Selecting identity source in AWS IAM Identity Center
      2. For Choose identity source, select External identity provider, then choose Next.

        Choosing External Identity provider in AWS IAM Identity Center

      3. In the Service provider metadata section, choose Download metadata file to download the IAM Identity Center metadata file.

        You will use this service provider metadata file in the next step when you connect Ping Identity with IAM Identity Center.

      Downloading service provider metadata from AWS IAM Identity Center

    5. Return to the Ping Identity console and the SAML application page.
    6. In the SAML Configuration section, select Import Metadata, upload the metadata file you downloaded, then choose Save.

      Importing service provider metadata into Ping Identity

    7. On the Overview tab of the application page, choose Download Metadata under Connection details to download the Ping Identity IdP metadata.
      You will use this for the SAML configuration in IAM Identity Center to set up Ping Identity as an IdP in the next step.

      Downloading Identity provider metadata from Ping Identity

    8. Return to the IAM Identity Center console and continue configuring your identity source:
      1. In the Identity provider metadata section, choose Choose file under IdP SAML metadata, upload the metadata file you downloaded from Ping Identity, then choose Next.

        Configuring Ping Identity as Identity Provider in AWS IAM Identity Center

      2. Choose Accept to accept the disclaimer.
      3. Choose Change identity source.
    9. Return to the Ping Identity console to complete the SAML configuration.
    10. On the Configuration tab, choose the edit icon to update the configuration:
      1. For Sign, choose Sign Assertion & Response.
      2. For Subject Name ID, enter urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress.
      3. For Assertion Validity Duration, enter 300.
      4. Leave the remaining values as default.

      Ping Identity SAML Configurations

    11. On the Attributes tab, choose the edit icon.
    12. Choose +Add to add two attribute mappings:
      1. Map the attribute saml-subject to Username, and leave Name format as default.
      2. Map the attribute https://aws.amazon.com/SAML/Attributes/PrincipalTag:Email to Email Address, and set Name format to Unspecified.
      3. Choose Save.

      Ping Identity SAML attributes mapping

    13. On the PingOne Policies tab, select Single Factor, then choose Save.
      This post uses single-factor authentication for demonstration purposes only. In your environments, follow your organization’s security standards and governance framework.

      Ping Identity policy configuration

    14. On the Access tab, search for the sagemaker group under Group Membership Policy, and assign the unifiedstudio SAML application to the group.
    15. Enable the application.
      Enabling Ping Identity SMAL application

    Set up automatic provisioning of users and groups from Ping Identity into IAM Identity Center

    To configure the automatic provisioning of users and groups between Ping Identity and IAM Identity Center through SCIM, you must have access to both management consoles. Complete the following steps:

    1. On the IAM Identity Center console, choose Settings in the navigation pane.
    2. In the Automatic provisioning section, choose Enable.
      Enabling automatic provisioning in AWS IAM Identity Center

      This enables automatic provisioning in IAM Identity Center and displays the necessary SCIM endpoint and access token information.

    3. In the Inbound automatic provisioning dialog box, copy the values for SCIM endpoint and Access token, then choose Close.
      You will use these values to configure provisioning in Ping Identity in the next step.

      Automatic provisioning configuration parameters in IAM Identity Center

      This completes the setup process in IAM Identity Center.

    4. Log in to the Ping Identity console.
    5. In the navigation pane, choose Integrations, then choose Provisioning.
    6. Choose the plus sign to add a new connection.
      Creating a new SCIM connection
    7. For Choose a connection type, choose Select next to Identity Store.
      Choosing connection type
    8. Provide a name (for this example, we use Identitycenter) and an optional description, then choose Next.
      Creating new connection
    9. Under Configuration Authentication, provide the following configuration:
      1. For SCIM BASE URL, enter the SCIM endpoint from IAM Identity Center.
      2. For Authentication Method, choose OAuth 2 Bearer Token.
      3. For Oauth Access Token, enter the access token from IAM Identity Center.
      4. For Auth Type Header, choose Bearer (default option).
      5. Choose Test Connection to validate the connection between Ping Identity and IAM Identity Center, then choose Next.

      Configuring authentication between Ping Identity and IAM Identity Center

    10. Under Configuration Preference, provide the following configuration:
      1. For User Filter Expression, enter userName Eq “%s”.
      2. For Group Membership Handling, select Merge.
      3. Leave the remaining settings as default and choose Save.

      SCIM connection preferences

    11. On the Provisioning tab, choose the plus sign, then choose New Rule to create a rule for the SCIM connection.
      Creating a new SCIM rule
    12. Enter a name (for this example, unifiedstudio) and an optional description, then choose Create Rule.
    13. Under the newly created rule, choose the plus sign next to Available Connections to add the connection identitycenter, then choose Save.
    14. Edit the user filter:
      1. For Attribute, choose Enabled.
      2. For Operator, choose Equals.
      3. For Value, choose true.
      4. Choose Save.

      User Filter attributes mapping

    15. Choose the edit icon next to Attribute Mapping and set the attribute mappings as shown in the following screenshot:
      1. Delete the Primary Phone attribute mapping because it’s optional in AWS. Leaving this field blank can cause Ping Identity’s SCIM connector to generate errors during user provisioning.
      2. Add a new attribute called Username under PingOne Directory and then map to displayName under Identitycenter.

      Attributes mapping between Ping Identity SCIM and AWS IAM Identity Center

    16. Under Group Provisioning, choose the sagemaker group if you want to sync all sagemaker group users with auto provisioning.
      1. In the pop-up, select I understand and want to continue, then choose Save.

      Assigning groups to SCIM rule

      Assigning groups to SCIM rule

    17. On the Provisioning page, choose the Connections tab.
    18. Enable the SCIM connection Identitycenter and rule unifiedstudio.

      Enabling the SCIM connection

      Enabling the SCIM rule

    This completes the SCIM setup process between Ping Identity and IAM Identity Center.

    Configure SageMaker Unified Studio SSO user access

    Complete the following steps to configure SSO user access to SageMaker Unified Studio for your SageMaker domain:

    1. On the SageMaker console, choose Domains in the navigation pane.
    2. Choose the domain for which you want to configure SAML user access.
    3. On the domain details page, you can find the SSO configuration in two locations:
      1. From the main domain view, choose Configure next to Configure SSO user access.
      2. Alternatively, scroll down to the User management tab and choose Configure SSO user access.

      SageMaker Unified Studio SSO configuration

    4. On the Choose user authentication method page, select IAM Identity Center, then choose Next.
      Choosing authentication
    5. For Choose user and group assignment method, choose from the following options, then choose Next:
      1. Require assignments: Users and groups must be explicitly added to the domain to gain access. This provides more granular control over who can access the domain.
      2. Do not require assignments: All authorized Ping Identity users and groups can access this domain if they have been assigned to the SAML application in Ping Identity.

      For either option, users or groups must have access to the Ping Identity SAML application (unifiedstudio in this example) to authenticate successfully.

      SageMaker Unified Studio SAML configuration

    6. On the Review and save page, review your choices and choose Save. These settings can’t be changed after you save them.
      Review and confirm SAML configuration
    7. If you’ve chosen to require assignments, use the Add users and groups section to add SAML users and groups to your domain.
      Add users and groups to SageMaker Unified Studio domain

    Now, users will be able to access SageMaker Unified Studio using the domain URL with their SSO credentials.

    You can explore different projects for your users and assign those projects based on your IdP user groups for fine-grained access controls. For example, you can create different SAML user groups based on their job function in Ping Identity, then assign those Ping Identity groups to the unifiedstudio SAML application in Ping Identity, and then assign those Ping Identity SAML groups to their respective project profiles in SageMaker Unified Studio. To assign project profiles for their respective groups, choose the Project profiles tab and choose your project profile. On the Authorized users and groups page, choose Add, then choose SSO groups. Choose Add users and groups button to complete the project profile assignment.

    Assigning a project profile to Ping Identity group

    Validate access with Ping Identity users

    Complete the following steps to validate access:

    1. On the SageMaker domain details page, choose the link for the SageMaker Unified Studio URL.
      Validating Ping Identity user access with Amazon SageMaker Unified Studio
    2. Log in with your user credentials.
      After successful login, you will be redirected to the SageMaker Unified Studio home page. Here, you can explore different projects to your users and assign those projects based on your SAML user groups for fine-grained access control.

      SAML authenticated Amazon SageMaker Unified Studio

    3. To assign an authorization policy, those Govern and then Domain units.
    4. Choose your SageMaker domain, then choose a suitable authorization policy. For this example, we choose Project creation policy.
      Amazon SageMaker unified studio authorization policies
    5. Choose Add policy grant to assign user groups or users to their respective project profiles.
      Amazon SageMaker unified studio authorization policies assignment

    You have successfully federated SageMaker Unified Studio with Ping Identity as an IdP with IAM Identity Center. You can connect to SageMaker Unified Studio by using your Ping Identity credentials.

    Clean up

    After you test out this solution, remember to delete the resources you created to avoid incurring future charges. For instructions to delete your SageMaker Unified Studio domain, refer to Delete domains. If you want to delete your Ping Identity account, reach out to Ping Identity for assistance.

    Conclusion

    In this post, we demonstrated how to set up Ping Identity as an IdP over SAML authentication for SageMaker Unified Studio access through IAM Identity Center federation. To learn more, refer to the Amazon SageMaker Unified Studio User Guide, which provides guidance on how to build data and AI applications using SageMaker.


    About the authors

    Raghavarao Sodabathina

    Raghavarao Sodabathina

    Raghavarao is a Principal Solutions Architect at AWS, focusing on data analytics, AI/ML, and cloud security. He engages with customers to create innovative solutions that address customer business problems and accelerate the adoption of AWS services. In his spare time, Raghavarao enjoys spending time with his family, reading books, and watching movies.

    Matt Nispel

    Matt Nispel

    Matt is an Enterprise Solutions Architect at AWS. He has more than 10 years of experience building cloud architectures for large enterprise companies. At AWS, Matt helps customers rearchitect their applications to take full advantage of the cloud. Matt lives in Minneapolis, Minnesota, and in his free time enjoys spending time with friends and family.

    Himanshu Sarda

    Himanshu Sarda

    Himanshu is a Solutions Architect at AWS who specializes in generative AI and autonomous agent architectures, helping enterprise customers revolutionize their businesses through cutting-edge AI solutions. When not pioneering AI innovations, Himanshu recharges by exploring the outdoors and creating memories with family and friends.

    Nicholaus Lawson

    Nicholaus Lawson

    Nicholaus is a Solutions Architect at AWS and part of the AI/ML specialty group. He has a background in software engineering and AI research. Outside of work, Nicholaus is often coding, learning something new, or woodworking.

    Krupanidhi Jay

    Krupanidhi Jay

    Krupanidhi is a Boston-based Enterprise Solutions Architect at AWS. He is a seasoned architect with over 20 years of experience in helping customers with digital transformation and delivering seamless digital user experiences. He enjoys working with customers to help them build scalable, cost-effective solutions in AWS. Outside of work, Jay enjoys spending time with family and traveling.

    IAM Identity Center now supports IPv6

    Post Syndicated from Suchintya Dandapat original https://aws.amazon.com/blogs/security/iam-identity-center-now-supports-ipv6/

    Amazon Web Services (AWS) recommends using AWS IAM Identity Center to provide your workforce access to AWS managed applications—such as Amazon Q Developer—and AWS accounts. Today, we announced IAM Identity Center support for IPv6. To learn more about the advantages of IPv6, visit the IPv6 product page.

    When you enable IAM Identity center, it provides an access portal for workforce users to access their AWS applications and accounts either by signing in to the access portal using a URL or by using a bookmark for the application URL. In either case, the access portal handles user authentication before granting access to applications and accounts. Supporting both IPv4 and IPv6 connectivity to the access portal helps facilitate seamless access for clients, such as browsers and applications, regardless of their network configuration.

    The launch of IPv6 support in IAM Identity Center introduces new dual-stack endpoints that support both IPv4 and IPv6, so that users can connect using IPv4, IPv6, or dual-stack clients. Current IPv4 endpoints continue to function with no action required. The dual stack capability offered by Identity Center extends to managed applications. When users access the application dual-stack endpoint, the application automatically routes to the Identity Center dual-stack endpoint for authentication. To use Identity Center from IPv6 clients, you must direct your workforce to use the new dual-stack endpoints, and update configurations on your external identity provider (IdP), if you use one.

    In this post, we show you how to update your configuration to allow IPv6 clients to connect directly to IAM Identity Center endpoints without requiring network address translation services. We also show you how to monitor which endpoint users are connecting to. Before diving into the implementation details, let’s review the key phases of the transition process.

    Transition overview

    To use IAM Identity Center from an IPv6 network and client, you need to use the new dual-stack endpoints. Figure 1 shows what the transition from IPv4 to IPv6 over dual-stack endpoints looks like when using Identity Center. The figure shows:

    • A before state where clients use the IPv4 endpoints.
    • The transition phase, when your clients use a combination of IPv4 and dual-stack endpoints.
    • After the transition is complete, your clients will connect to dual-stack endpoints using their IPv4 or IPv6, depending on their preferences.

    Figure 1: Transition from IPv4-only to dual-stack endpoints

    Figure 1: Transition from IPv4-only to dual-stack endpoints

    Prerequisites

    You must have the following prerequisites in place to enable IPv6 access for your workforce users and administrators:

    • An existing IAM Identity Center instance
    • Updated firewalls or gateways to include the new dual-stack endpoints
    • IPv6 capable clients and networks

    Work with your network administrators to update the configuration of your firewalls and gateways and to verify that your clients, such as laptops or desktops, are ready to accept IPv6 connectivity. If you have already enabled IPv6 connectivity for other AWS services, you might be familiar with these changes. Next, implement the two steps that follow.

    Step 1: Update your IdP configuration

    You can skip this step If you don’t use an external IdP as your identity source.

    In this step, you update the Assertion Consumer Service (ACS) URL from your IAM Identity Center instance into your IdP’s configuration for single sign-on and the SCIM configuration for user provisioning. Your IdP’s capability determines how you update the ACS URLs. If your IdP supports multiple ACS URLs, configure both IPv4 and dual-stack URLs to enable a flexible transition. With that configuration, some users can continue using IPv4-only endpoints while others use dual-stack endpoints for IPv6. If your IdP supports only one ACS URL, to use IPv6 you must update the new dual-stack ACS URL in your IdP and transition all users to using dual-stack endpoints. If you don’t use an external IdP, you can skip this step and go to the next step.

    Update both the SAML single sign-on and the SCIM provisioning configurations:

    1. Update the single sign-on settings in your IdP to use the new dual-stack URLs. First, locate the URLs in the AWS Management Console for IAM Identity Center.
      1. Choose Settings in the navigation pane and then select Identity source.
      2. Choose Actions and select Manage authentication.
      3. in Under Manage SAML 2.0 authentication, you will find the following URLs under Service provider metadata:
        • AWS access portal sign-in URL
        • IAM Identity Center Assertion Consumer Service (ACS) URL
        • IAM Identity Center issuer URL
    2. If your IdP supports multiple ACS URLs, then add the dual-stack URL to your IdP configuration alongside existing IPv4 one. With this setting, you and your users can decide when to start using the dual-stack endpoints, without all users in your organization having to switch together.

      Figure 2: Dual-stack single sign-on URLs

      Figure 2: Dual-stack single sign-on URLs

    3. If your IdP does not support multiple ACS URLs, replace the existing IPv4 URL with the new dual-stack URL, and switch your workforce to use only the dual-stack endpoints.
    4. Update the provisioning endpoint in your IdP. Choose Settings in the navigation pane and under Identity source, choose Actions and select Manage provisioning. Under Automatic provisioning, copy the new SCIM endpoint that ends in api.aws. Update this new URL in your external IdP.

      Figure 3: Dual-stack SCIM endpoint URL

      Figure 3: Dual-stack SCIM endpoint URL

    Step 2: Locate and share the new dual-stack endpoints

    Your organization needs two kinds of URLs for IPv6 connectivity. The first is the new dual-stack access portal URL that your workforce users use to access their assigned AWS applications and accounts. The dual-stack access portal URL is available in the IAM Identity Center console, listed as the Dual-stack in the Settings summary (you might need to expand the Access portal URLs section, shown in Figure 4).

    Figure 4: Locate dual-stack access portal endpoints

    Figure 4: Locate dual-stack access portal endpoints

    This dual-stack URL ends with app.aws as its top-level domain (TLD). Share this URL with your workforce and ask them to use this dual-stack URL to connect over IPv6. As an example, if your workforce uses the access portal to access AWS accounts, they will need to sign in through the new dual-stack access portal URL when using IPv6 connectivity. Alternately, if your workforce accesses the application URL, you need to enable the dual-stack application URL following application-specific instructions. For more information, see AWS services that support IPv6.

    The URLs that administrators use to manage IAM Identity Center are the second kind of URL your organization needs. The new dual-stack service endpoints end in api.aws as their TLD and are listed in the Identity Center service endpoints. Administrators can use these service endpoints to manage users and groups in Identity Center, update their access to applications and resources, and perform other management operations. As an example, if your administrator uses identitystore.{region}.amazonaws.com to manage users and groups in Identity Center, they should now use the dual-stack version of the same service endpoint which is identitystore.{region}.api.aws, so they can connect to service endpoints using IPv6 clients and networks.

    If your users or administrators use an AWS SDK to access AWS applications and accounts or manage services, follow Dual-stack and FIPS endpoints to enable connectivity to the dual-stack endpoints.

    After completing these two steps, your workforce and administrators can connect to IAM Identity Center using IPv6. Remember, these endpoints also support IPv4, so clients not yet IPv6-capable can continue to connect using IPv4.

    Monitoring dual-stack endpoint usage

    You can optionally monitor AWS CloudTrail logs to track usage of dual-stack endpoints. The key difference between IPv4-only and dual-stack endpoint usage is the TLD and appears in the clientProvidedHostHeader field. The following example shows the difference between these CloudTrail events for the CreateTokenWithIAM API call.

    IPv4-only endpoints Dual-stack endpoints
    "CloudTrailEvent": {
      "eventName": "CreateToken",
      "tlsDetails": {
         "tlsVersion": "TLSv1.3",
         "cipherSuite": "TLS_AES_128_GCM_SHA256",
         "clientProvidedHostHeader": "oidc.us-east-1.amazonaws.com"
      }
    }

    "CloudTrailEvent": {
      "eventName": "CreateToken",
      "tlsDetails": {
         "tlsVersion": "TLSv1.3",
         "cipherSuite": "TLS_AES_128_GCM_SHA256",
         "clientProvidedHostHeader": "oidc.us-east-1.api.aws"
      }
    }

    Conclusion

    IAM Identity Center now allows clients to connect over IPv6 natively with no network address translation infrastructure. This post showed you how to transition your organization to use IPv6 with Identity Center and its integrated applications. Remember that existing IPv4 endpoints will continue to function, so you can transition at your own pace. Also, no immediate action is required by you. However, we recommend planning your transition to take advantage of IPv6 benefits and meet compliance requirements. If you have questions, comments, or concerns, contact AWS Support, or start a new thread in the IAM Identity Center re:Post channel.

     
    If you have feedback about this post, submit comments in the Comments section below. If you have questions about this post, contact AWS Support.
     

    Suchintya Dandapat
    Suchintya Dandapat

    Suchintya Dandapat is a Principal Product Manager for AWS where he partners with enterprise customers to solve their toughest identity challenges, enabling secure operations at global scale.

    Access a VPC-hosted Amazon OpenSearch Service domain with SAML authentication using AWS Client VPN

    Post Syndicated from Jan Michael Go Tan original https://aws.amazon.com/blogs/big-data/access-a-vpc-hosted-amazon-opensearch-service-domain-with-saml-authentication-using-aws-client-vpn/

    Customers often want to deploy Amazon OpenSearch Service domains in virtual private clouds (VPC) and use single sign-on (SSO) with SAML for access control to enhance security. However, setting this up can be challenging.

    In this post, we explore different OpenSearch Service authentication methods and network topology considerations. Then we show how to build an architecture to access an OpenSearch Service domain hosted in a VPC using AWS Client VPN, AWS Transit Gateway, and AWS IAM Identity Center.

    Solution overview

    The following diagram illustrates the solution architecture.

    High-level network diagram

    The end-user authenticates with IAM Identity Center and connects to the AWS environment from their browser through Client VPN. The traffic is routed from the VPN VPC to the database VPC where the OpenSearch service endpoints are deployed. The user then authenticates to OpenSearch Service through IAM Identity Center. This architecture provides a scalable, enterprise-grade solution that avoids using bastion hosts while making sure only authorized users can access your OpenSearch Service domains through a secure VPN connection. In the following sections, we walk through the steps to set up IAM Identity Center, configure Transit Gateway to facilitate communication between VPCs, and configure SAML-based authentication using IAM Identity Center for both OpenSearch Service and VPN access. Prior experience setting up Client VPN, IAM Identity Center, and Transit Gateway would be beneficial but is not necessary to follow along with this post.

    OpenSearch Service authentication methods and SAML

    OpenSearch Service supports multiple authentication methods. You can use AWS Identity and Access Management (IAM) to call the OpenSearch Service configuration API (for details, see Making and signing OpenSearch Service requests). However, this doesn’t give you access to the visual dashboard. To access the visual dashboard and call the OpenSearch Service configuration API, you can use the OpenSearch Service built-in internal user database or Amazon Cognito for authentication and user management features. However, these options use separate user pools, which adds additional security and management overhead when adding and removing users.

    Therefore, many customers choose to use SAML federation to integrate OpenSearch Service authentication with their existing identity providers like Entra ID, Okta, or JumpCloud. For this post, we use the IAM Identity Center directory as our identity source. One limitation of this approach is that it only supports identity provider-initiated authentication. This means that users must log in through the IAM Identity Center portal and then access their OpenSearch Service dashboard from there.

    Private network topology options for OpenSearch Service

    When deploying OpenSearch Service domains in a private VPC, organizations must establish secure and reliable network connectivity to access their OpenSearch Service domains. AWS offers several networking solutions that can be implemented individually or in combination to meet specific access requirements. These options include Transit Gateway for centralized network management, AWS Direct Connect or AWS Site-to-Site VPN for on-premises connectivity, and Client VPN for secure remote access. Each solution provides unique benefits and can be combined to meet different organizational needs, security requirements, and performance expectations.

    AWS Transit Gateway

    Transit Gateway functions as a cloud router that simplifies network connectivity by acting as a central hub for connecting VPCs and on-premises networks. Implementing Transit Gateway with OpenSearch Service enables consolidated access to your OpenSearch Service domain across multiple VPCs and AWS accounts. Through Transit Gateway route tables, you can precisely control traffic flow between attached networks. It supports transitive routing between VPCs and on-premises networks, significantly reducing the number of peering connections needed to access your OpenSearch Service domain. This centralized approach is a common pattern used by customers, which makes network management scalable as your infrastructure grows.

    AWS Client VPN

    With Client VPN, you can securely access your private OpenSearch Service domain through a managed OpenVPN-based solution. Using Client VPN removes the need to use a bastion host or proxy server to access an OpenSearch Service domain, reducing your management burden and improving security. Client VPN supports both certificate-based and SAML-based authentication. Client VPN endpoints can be associated with multiple subnets to provide high availability. The service includes comprehensive security features such as connection logging and security group controls.

    For more information on VPC connectivity options, refer to the AWS Direct Connect whitepaper.

    Combining Client VPN with Transit Gateway provides a scalable and flexible way to access an OpenSearch Service domain in a private VPC. In the subsequent sections, we walk you through how to integrate the various services.

    Prerequisites

    If you haven’t yet set up IAM Identity Center, refer to Enable IAM Identity Center to enable it. Both organization instances and account instances will work. The Identity Center instance must be deployed in the same AWS Region as your OpenSearch Service domain.

    After you set up IAM Identity Center, complete the following steps to create an IAM Identity Center group:

    1. On the IAM Identity Center console, choose Groups in the navigation pane.
    2. Choose Create group and create a group (for this example, we name the group vpn_users.
    3. After you create the group, choose the group name to open its details page.
    4. Locate the group ID under General information. Save this in a text editor.
      IAM Identity Center Group ID
    5. Create a user (or multiple users) and assign them to the vpn_users group. This can be done directly through the user creation flow or after creating the user.

    Set up the initial network topology

    For this post, we use the network topology shown in the following diagram. One VPC hosts the client VPN endpoint with CIDR range 10.0.0.0/16 and a separate VPC with CIDR range 10.1.0.0/16 that hosts our OpenSearch Service nodes. The two VPCs are connected with Transit Gateway. The CIDR ranges in your environment may vary. The only requirement is that they can’t overlap.

    Network topology

    Complete the following steps to create the two VPCs using Amazon Virtual Private Cloud (Amazon VPC):

    1. On the Amazon VPC console, choose Create VPC.
    2. Choose VPC and more.
    3. For this post, name the VPC VPN-VPC and use 10.0.0.0/16 for the IPv4 CIDR block.
    4. Choose 3 for the number of Availability Zones.
    5. Choose 0 for the number of public subnets.
    6. Choose 3 for the number of private subnets.
    7. Choose None for the number of NAT gateways.
    8. Choose None for the number of VPC endpoints.
      Initial VPC configuration
    9. Repeat these steps to create the second VPC for the OpenSearch Service domain. Keep the same configuration settings except for the following:
      1. Name: Database-VPC
      2. IPv4 CIDR Block: 10.1.0.0/16

    Configure Transit Gateway

    Follow the instructions in Create an AWS Transit Gateway using the Amazon VPC Console to create a transit gateway and attach your VPCs to it.

    Next, you must update each VPC route table to facilitate connectivity to the OpenSearch Service domain.

    1. On the Amazon VPC console, choose Route tables in the navigation pane.
    2. For VPN-VPC, add routes on the subnets where the Client VPN endpoints are attached. The route is 10.1.0.0/16 using Transit Gateway. This route allows VPN users to reach Database-VPC.
      Route table
    3. For Database-VPC, add routes on the subnets of the OpenSearch Service domain endpoint. The route is 10.0.0.0/16 using Transit Gateway. This route allows responses from Database-VPC back to reach the VPN users.
      OpenSearch Route Table

      Next, you must update the Transit Gateway Security Group Referencing support configuration. This allows the OpenSearch Service domain’s security group to open port 443 to only the Client VPN security group. This makes applying least privilege simpler.

    4. On the Transit Gateway console, select the transit gateway you’re using.
    5. On the Actions menu, choose Modify transit gateway.
      Modify TGW
    6. Select Security Group Referencing support and choose Modify transit gateway.
      TGW Security Group Configuration

    Configure Client VPN authentication

    Client VPN can be associated to multiple VPC subnets for high availability. Client VPN supports multiple client authentication methods. For this post, we use SAML-based authentication with IAM Identity Center.

    To set up SAML-based authentication with IAM Identity Center, follow the instructions in the following sections. For more details, refer to Authenticate AWS Client VPN users with AWS IAM Identity Center. Deploy and associate the Client VPN endpoint with VPN-VPC.

    Configure Client VPN access to database VPC

    During the initial setup of the Client VPN endpoint, you defined authorization rules that authorized the VPN_users group to access the VPN-VPC network, which is 10.0.0.0/16.Complete the following steps to add connectivity to database-VPC:

    1. On the Amazon VPC console, choose Client VPC endpoints in the navigation pane.
    2. Select the endpoint you created.
    3. In the Authorization rules section, choose Add authorization rules.
      ClientVPN Auth Rules
    4. For Destination network to enable access, enter 10.1.0.0/16 (this is the database VPC).
    5. For Grant access to, select Allow access to all users.
    6. Choose Add authorization rule.
      ClientVPN Add Auth Rule

      After you create the authorization rule, the user now has access to that CIDR range. Next, you add an entry in the Client VPN endpoint’s route table to provide reachability from a network perspective.

    7. On the Client VPN endpoints page, select the endpoint you just created.
    8. In the Route table section, choose Create route.
      ClientVPN Route
    9. For Route destination, enter the CIDR range for Database-VPC (10.1.0.0/16).
    10. For Subnet ID for target network association, choose a subnet ID.
    11. Choose Create route.
      ClientVPN Create Route

    You should see the new route in the “Creating” state. After it has reached the “Active” state, VPN users will have a network path to the database VPC to be able to reach the OpenSearch Service domain.

    ClientVPN Route Creating State

    Configure Client VPN application on your client

    Complete the following steps to configure the Client VPN application to your client:

    1. Download the relevant installer for Client VPN for Desktop and install Client VPN.
    2. Download and prepare the Client VPN endpoint file.
    3. Open the Client VPN application.
    4. Choose Manage Profile, then choose Add Profile.
    5. Enter a display name and upload the VPN configuration file.
    6. Choose Add Profile.

    Set up federation with IAM Identity Center with OpenSearch Service

    Complete the following steps to set up federation with IAM Identity Center with OpenSearch Service:

    1. Create an OpenSearch Service domain in the database VPC.
    2. Set up the SAML integration between OpenSearch Service and IAM Identity Center. Assign the same groups that you assigned to the VPN custom application to the OpenSearch Service custom application.
    3. Modify the security group associated with the OpenSearch Service domain to allow access from the Client VPN subnet.
    4. Modify the security group of Client VPN and add the following entry:
      1. Type: HTTPS
      2. Source: Use Custom and reference the security group of the OpenSearch Service domain

    Test the end-to-end flow

    Now you can test the entire flow end-to-end:

    1. Run Client VPN on your local machine. Use the profile that you previously configured.
      The client will prompt you to authenticate with IAM Identity Center. After authentication, you will see the message “Authentication details received, processing details. You may close this window at any time.”
    2. Access your IAM Identity Center access portal URL (this can be found on the IAM Identity Center console, under Dashboard). Sign in as a user that has been assigned to the OpenSearch Service custom application in the previous step.
    3. After authentication, choose the Applications tab in AWS Access Portal and choose the OpenSearch Service application.

    This should redirect you to the OpenSearch Service Dashboards page with the role that you assigned.

    IAM Identity Center - App List

    Clean up

    After you test the solution, delete the resources you created to avoid incurring future charges:

    1. Delete the OpenSearch Service domain and the SAML application, users, and groups in IAM Identity Center.
    2. Delete the client VPN endpoints that you created and remove the routing rules from Transit Gateway.

    Conclusion

    In this post, we discussed the networking options for securely accessing an OpenSearch Service domain deployed in a private VPC through services like Transit Gateway, Client VPN, and Site-to-Site VPN. We also discussed how to use IAM Identity Center for authentication and authorization, helping you simplify identity management for OpenSearch Service. If you have feedback about this post, provide it in the comments section.


    About the authors

    Jan Michael Go Tan

    Jan Michael Go Tan

    Jan Michael is a Principal Solutions Architect for Amazon Web Services. He helps customers design scalable and innovative solutions with the AWS Cloud.

    Kevin Low

    Kevin Low

    Kevin is a Security Solutions Architect at AWS who helps the largest customers across ASEAN build securely. He specializes in threat detection and incident response and is passionate about integrating resilience and security. Outside of work, he loves spending time with his wife and dog, a poodle called Noodle.

    Federate access to SageMaker Unified Studio with AWS IAM Identity Center and Okta

    Post Syndicated from Raghavarao Sodabathina original https://aws.amazon.com/blogs/big-data/federate-access-to-sagemaker-unified-studio-with-aws-iam-identity-center-and-okta/

    Many organizations are using an external identity provider to manage user identities. With an identity provider (IdP), you can manage your user identities outside of AWS and give these external user identities permissions to use AWS resources in your AWS accounts. External identity providers (IdP), such as Okta Universal Directory, can integrate with AWS IAM Identity Center to be the source of truth for Amazon SageMaker Unified Studio.

    Amazon SageMaker Unified Studio supports a single sign-on (SSO) experience with AWS IAM Identity Center authentication. Users can access Amazon SageMaker Unified Studio with their existing corporate credentials. AWS IAM Identity Center enables administrators to connect their existing external identity providers and allows them to manage users and groups in their existing identity systems such as Okta which can then be synchronized with AWS IAM Identity Center using SCIM (System for Cross-domain Identity Management).

    This post shows step-by-step guidance to setup workforce access to Amazon SageMaker Unified Studio using Okta as an external Identity provider with AWS IAM Identity Center.

    Prerequisites

    Before you start , make sure you have:

    1. An AWS account with AWS IAM Identity Center enabled . It is recommended to use an organization-level AWS IAM Identity Center instance for best practices and centralized identity management across your AWS organization.
    2. Okta account with users and a group
    3. A browser with network connectivity to Okta and Amazon SageMaker Unified Studio

    Solution Overview

    The steps in this post are structured into the following sections:

    1. Enable AWS IAM Identity Center
    2. Create an Amazon SageMaker domain
    3. Setup Okta users and groups
    4. Configure SAML in Okta for AWS IAM Identity Center
    5. Configure Okta as an identity provider in AWS IAM Identity Center
    6. Connect AWS IAM Identity Center to Okta
    7. Set up automatic provisioning of users and groups in AWS IAM Identity Center
    8. Complete Okta Configuration
    9. Configure Amazon SageMaker Unified Studio for SSO
    10. Test the setup
    11. Cleanup

    Enable AWS IAM Identity Center

    To enable AWS IAM Identity Center, follow the instructions in Enable IAM Identity Center in the AWS IAM Identity Center User Guide.

    Create an Amazon SageMaker domain

    1. Sign into the AWS Management console and navigate to the Amazon SageMaker console. To create a new Amazon SageMaker Unified Studio domain follow the instructions in Create a Amazon SageMaker Unified Studio domain – manual setup
    2. From the Amazon SageMaker domain Summary page, copy the Domain ARN and save the value as shown Figure 1 for later use.

    Screenshot of Amazon SageMaker domain summary page showing Domain ARN field
    Figure 1: Amazon SageMaker Domain

    Setup Okta users and groups

    Step 1: Sign up for an Okta account

    • Sign up for an Okta account, then choose the Sign up button to complete your account setup.
    • If you already have an account with Okta, login to your Okta account.

    Step 2: Create Groups in Okta

    • Choose Directory in the left menu and choose Groups to proceed.
    • Click on Add Group and enter name as unifiedstudio. Then choose the Save button.

    Screenshot of Okta group creation interface with unifiedstudio group name entered
    Figure 2. Creating a group in Okta

    Step 3: Create users in Okta

    • Choose People in left menu under Directory section and choose +Add Person.
    • Provide First name, Last name, username (email ID), and primary email. Then select I will set password and choose first time password. Use the Save button to create your user.
    • Add more users as needed.

    Step 4: Assign Groups to users

    • Choose Groups from the left menu, then choose the unifiedstudio group created in Step 2.
    • Use Assign People to add users to the sagemaker group. Next, use + for each user you want to add.

    Configure SAML In Okta

    1. Login to your okta domain and choose Applications from the left menu. Choose Applications, then choose Browse App Catalog
    2. In the search box, enter AWS IAM Identity Center, then choose the app to add the AWS IAM Identity Center app and then, choose + Add Integration button.
      The following image shows the SAML app integration setup:
      Screenshot of Okta application catalog showing AWS IAM Identity Center app selection
      Figure 3. Creating a SAML app integration in Okta
    3. For this example, we are creating an application called “unifiedstudio”. Under General Settings: Required enter the following
      • Application label = Replace IAM Identity Center with unifiedstudio and then, choose Save
    4. Under Sign on menu. Copy Metadata URL under SAML 2.0 section and then, open Metadata URL in a new browser window to download the Okta identity provider metadata and save it as metadata.xml. You will use this for the SAML configuration in AWS IAM Identity Center to setup Okta as an Identity Provider.The following image shows where to find the metadata URL:

      Screenshot of Okta SAML settings showing metadata URL
      Figure 4: Downloading Okta identity provider metadata for SAML configuration

    5. Choose More details and copy Sign on URL into text file; you will use this for the SAML configuration in Amazon SageMaker Unified Studio.

    You are now ready to move to the AWS IAM Identity Center console to create an identity provider integration for your Okta instance.

    Configure Okta as an identity provider in AWS IAM Identity Center

    1. Sign in to the AWS IAM Identity Center console as a user with administrative privileges
    2. In the left navigation menu, choose Settings and then, open the Identity source tab, choose Change Identity source from Actions dropdown as shown in Figure 5
      Screenshot of AWS IAM Identity Center settings page showing Change Identity source optionFigure 5: Selecting identity source in AWS IAM Identity Center
    3. From Under Identity source, choose External Identity provider as shown in Figure 6
      Screenshot showing External Identity provider selection in AWS IAM Identity Center
      Figure 6: Choosing External Identity provider in AWS IAM Identity Center
    4. You’ll need these configuration parameters for the next step. In Configure external identity provider section, under Service Provider metadata, do the following:
      • Choose Download metadata file to download the AWS IAM Identity Center metadata file and save it on your system
      • Copy these Service Provider metadata into a text file
        1. IAM Identity Center Assertion Consumer Service (ACS) URL
        2. IAM Identity Center issuer URL
    5. In Identity provider metadata section, under Idp SAML metadata, click on choose file and upload the metadata.xml file which you downloaded from okta in the previous step and then, choose Next as shown in Figure 7

      Screenshot of AWS IAM Identity Center external identity provider configuration showing metadata file upload

      Figure 7. Configuring okta as Identity Provider in AWS IAM Identity Center

    6. After you read the disclaimer and are ready to proceed, enter ACCEPT and then choose Change identity source to complete Okta as an Identity Provider in IAM Identity Center.

    Connect AWS IAM Identity Center to Okta

    1. Sign into Okta and go to the admin console.
    2. In the left navigation pane, choose Applications, and then choose the Okta application called unifiedstudio which you created in the previous section
    3. In Sign On, choose Edit to complete SAML configuration. Under Advanced Sign-on Settings enter the following and then, choose Save to complete configuration as shown Figure 8.
      1. For the AWS SSO ACS URL, enter IAM Identity Center Assertion Consumer Service (ACS) URL
      2. For the AWS SSO issuer URL, enter IAM Identity Center issuer URL
      3. For the Application username format, choose Okta username from dropdown

    Screenshot of Okta advanced sign-on settings showing AWS SSO configuration fieldsFigure 8. Configuring okta sign-on settings

    Set up automatic provisioning of users and groups

    In the AWS IAM Identity Center console, on the Settings page, locate the Automatic provisioning information box, and then choose Enable as shown in Figure 9. Copy these values to enable automatic provisioning.

    Screenshot of AWS IAM Identity Center automatic provisioning enable option

    Figure 9. Enabling automatic provisioning in AWS IAM Identity Center

    In the Inbound automatic provisioning dialog box, copy each of the values for the following options as shown in Figure 10 and then, choose Close

      • SCIM endpoint
      • Access token

    You will use these values to configure provisioning in Okta in the next step.

    Screenshot of AWS IAM Identity Center inbound automatic provisioning dialog showing SCIM endpoint and access tokenFigure 10. Automatic provisioning configuration parameters in AWS IAM Identity Center

    Complete the Okta integration

    1. Sign into Okta and go to the admin console.
    2. In the left navigation pane, choose Applications, and then choose the Okta application called unifiedstudio which you created earlier.
    3. In Provisioning tab, choose Edit to complete auto provisioning between okta and AWS IAM Identity Center.
      • Under Settings, choose Integration and then, choose Configure API integration and then, select Enable API integration to enable provisioning and enter the following using the SCIM provisioning values from AWS IAM Identity Center that you copied from the previous step as shown in Figure 11

        For the Base URL, enter SCIM endpoint from IAM Identity Center
        For the API Token, enter Access token from IAM Identity Center
        For Import Groups, select Import groups option

      And then, choose Test API Credentials to validate the SCIM provision and then, choose Save.

      Screenshot of Okta provisioning settings showing API integration configuration with SCIM endpoint and token fields

      Figure 11: Automatic provisioning configuration in Okta

    4. In the Provisioning tab, in the navigation pane under Settings, choose To App in the left navigation. Choose Edit, to Enable all options such as Create Users , Update User Attributes , Deactivate Users as shown in Figure 12 and then, choose Save.

      Screenshot of Okta provisioning To App settings showing user management options

      Figure 12: Enabling Automatic provisioning configuration in Okta

    5. In the Assignments tab, choose Assign, and then Assign to Groups.
      • Select the unifiedstudio group, choose Assign, and then, leave it to defaults on popup and then, choose Done to complete the Group assignment, as shown in Figure 13.

      Screenshot of Okta group assignment interface showing unifiedstudio group selectionFigure 13: Assigning unifiedstudio group to SAML application called unifiedstudio

    6. In the Push Groups tab, under Push Groups drop-down list, select Find groups by name as shown in Figure 14.

      Screenshot of Okta Push Groups interface showing Find groups by name option

      Figure 14: Choosing okta groups to push them to AWS IAM Identity Center

      • Select the unifiedstudio group, leave Push group memberships immediately default option and then, choose Save as shown in Figure 15.

      Screenshot of Okta push groups settings showing unifiedstudio group configuration

      Figure 15: Pushing okta groups to AWS IAM Identity Center

    Return to AWS IAM Identity Center, and you should be able to see Okta group and Okta users in AWS IAM Identity Center groups and users as shown In Figure 16.

    Screenshot of AWS IAM Identity Center showing Okta users and groups synchronized from external identity provider

    Figure 16: Okta user groups in AWS IAM Identity Center

    Configure SageMaker Unified Studio for SSO

    In this step, you will configure SSO user access to Amazon SageMaker Unified Studio for your Amazon SageMaker platform domain.

    1. Navigate to the Amazon SageMaker management console.
    2. In the left navigation menu, select Domains.
    3. Choose the Domain from the list for which you want to configure SAML user access.
    4. On the domain’s details page, choose Configure next to the Configure SSO user access.
      Screenshot of Amazon SageMaker domain details page showing Configure SSO user access option
      Figure 17: Amazon SageMaker Unified Studio SSO configuration
    5. On the Choose user authentication method page, choose IAM Identity Center. With IAM Identity Center, users configured through external Identity Providers (IdPs) get to access the domain’s Amazon SageMaker Unified Studio. Choose Next.
      Screenshot of SageMaker authentication method selection showing IAM Identity Center option
      Figure 18: Choosing authentication
    6. You can choose either Require assignments – which means you explicitly select users/groups that can access the domain or Do not require assignments – which allows all authorized Okta users and groups access to this domain.
      1. You have two options to configure how your users will access to Amazon SageMaker Unified studio with AWS IAM Identity Center federation with Okta
        • Do not required Assignments – The access will be provided to Amazon SageMaker Unified Studio based on your Okta SAML application assignments either through Group assignments or Individual user assignments. For this example, when you choose Do not required assignments option, all the users within unifiedstudio Okta group will have access to Amazon SageMaker Unified Studio as we have assigned unifiedstudio Okta user group to unifiedstudio SAML application in Okta.
        • Require Assignments – You need to add either Okta users or Okta group to Amazon SageMaker domain as shown in step 8. In step 8, you’ll add unifiedstudio Okta group into Amazon SageMaker domain so that all unifiedstudio Okta group users will get access to Amazon SageMaker Unified Studio. You can also provide an Individual Okta group users access to Amazon SageMaker unified studio through Amazon SageMaker domain console by adding SSO (okta user) user into the domain.
      2. Note that either an Individual user or group within Okta must be assigned to the AWS Identity center application (AWS IAM Identity Center from Okta application catalog. We renamed application label as unifiedstudio for this example) for both Do not require Assignments and Require Assignments options.

      Screenshot of SageMaker Unified Studio SAML configuration showing assignment options

      Figure 19. Amazon SageMaker Unified Studio SAML configuration

    7. On the Review and save page, review your choices and then choose Save. Note that these settings are permanent once saved.

      Screenshot of SageMaker SAML configuration review and save page

      Figure 20. Review and confirm SAML configuration

    8. If you’ve chosen to require assignments, use the Add users and groups to add SAML users and groups to your domain.

      Screenshot of SageMaker domain showing Add users and groups interface for Okta group assignment

      Figure 21. Adding okta group into Amazon Sagemaker domain

    9. Now, users will be able to access the Amazon SageMaker Unified Studio using the Domain URL with their SSO credentials.
    10. You can explore different projects for your users and assign those projects based on your SAML user groups for fine-grained access controls. For example, you can create different SAML user groups based on their job function in Okta, assign those Okta groups to AWS IAM Identity Center app in Okta and then, assign those Okta SAML groups to respective project profiles in Amazon SageMaker Unified Studio. To perform project profiles assignments to respective groups, choose project profiles tab, click on respective project profiles like SQL analytics, choose Authorized users and groups tab and then, choose Add and pick SSO groups from drop down as shown in Figure 22. Finally choose Add users and groups to complete project profile assignment.

      Screenshot of SageMaker Unified Studio project profile assignment interface showing SSO groups selection

      Figure 22. Assigning a project profile to okta group

    Test the setup

    1. The Amazon SageMaker Unified Studio URL can be found on the domain details page as shown in Figure 23. The first access to Amazon SageMaker Unified Studio URL redirects you to the Okta login screen.
      Screenshot of SageMaker domain details page showing the Unified Studio URL for user access

      Figure 23. Validating Okta user access with Amazon SageMaker Unified Studio

    2. Copy and paste the Amazon SageMaker Unified Studio URL in your browser and enter the user credentials.
    3. After successful login, you will be redirected to the Amazon SageMaker Unified Studio home page.

      Screenshot of Amazon SageMaker Unified Studio home page after successful SAML authentication

      SAML authenticated Amazon SageMaker Unified Studio

      Figure 24. SAML authenticated Amazon SageMaker Unified Studio

    4. Once logged into Amazon SageMaker Unified Studio, you can assign authorization policies based on your requirements. Choose Govern and then choose, Domain units and choose your SageMaker domain to select suitable authorization policies. For this example, we are choosing project creation policy as shown in Figure 25.

      Amazon SageMaker unified studio authorization policies

      Screenshot of SageMaker Unified Studio authorization policies interface showing project creation policy selection
      Figure 25. Amazon SageMaker unified studio authorization policies

    5. Choose Project membership policy and then choose ADD POLICY GRANT option to assign user groups or users to respective project. For this example, we are choosing project membership policy as shown in Figure 26.

      Amazon SageMaker unified studio authorization policies assignment

      Screenshot of SageMaker Unified Studio policy grant assignment interface for project membership

      Figure 26. Amazon SageMaker unified studio authorization policies assignment

    You’ve now successfully configured single sign-on for Amazon SageMaker Unified Studio using Okta credentials through AWS IAM Identity Center.

    Clean up

    To avoid ongoing charges, delete the resources you created:

    Conclusion

    In this post, we showed you how to set up Okta as an identity provider using SAML authentication for Amazon SageMaker Unified Studio access through AWS IAM Identity Center federation. This setup allows your users to access SageMaker Unified Studio with their existing corporate credentials, eliminating the need for separate AWS accounts.

    Get started by checking the Amazon SageMaker Unified Studio Developer Guide, which provides guidance on how to build data and AI applications using Amazon SageMaker platform


    About the authors

    Raghavarao Sodabathina

    Raghavarao Sodabathina

    Raghavarao is a principal solutions architect at AWS, focusing on data analytics, AI/ML, and cloud security. He engages with customers to create innovative solutions that address customer business problems and accelerate the adoption of AWS services. In his spare time, Raghavarao enjoys spending time with his family, reading books, and watching movies.

    Matt Nispel

    Matt Nispel

    Matt is an Enterprise Solutions Architect at AWS. He has more than 10 years of experience building cloud architectures for large enterprise companies. At AWS, Matt helps customers rearchitect their applications to take full advantage of the cloud. Matt lives in Minneapolis, Minnesota, and in his free time enjoys spending time with friends and family.

    Nicholaus Lawson

    Nicholaus Lawson

    Nicholaus is a Solution Architect at AWS and part of the AIML specialty group. He has a background in software engineering and AI research. Outside of work, Nicholaus is often coding, learning something new, or woodworking.

    Jacob Grant

    Jacob Grant

    Jacob is a Solutions Architect at AWS, based in Atlanta, Georgia, with over four years of AWS experience. He is currently focused on helping HCLS customers build innovative solutions. Jacob has a passion for building solutions in the Machine Learning and Artificial Intelligence domain and has helped customers integrate agentic features into their workloads. Outside of work, Jacob enjoys spending time with his wife and their two young daughters, embracing family adventures whenever possible.

    AWS IAM Identity Center now supports customer-managed KMS keys for encryption at rest

    Post Syndicated from Sébastien Stormacq original https://aws.amazon.com/blogs/aws/aws-iam-identity-center-now-supports-customer-managed-kms-keys-for-encryption-at-rest/

    Starting today, you can use your own AWS Key Management Service (AWS KMS) keys to encrypt identity data, such as user and group attributes, stored in AWS IAM Identity Center organization instances.

    Many organizations operating in regulated industries need complete control over encryption key management. While Identity Center already encrypts data at rest using AWS-owned keys, some customers require the ability to manage their own encryption keys for audit and compliance purposes.

    With this launch, you can now use customer-managed KMS keys (CMKs) to encrypt Identity Center identity data at rest. CMKs provide you with full control over the key lifecycle, including creation, rotation, and deletion. You can configure granular access controls to keys with AWS Key Management Service (AWS KMS) key policies and IAM policies, helping to ensure that only authorized principals can access your encrypted data. At launch time, the CMK must reside in the same AWS account and Region as your IAM Identity Center instance. The integration between Identity Center and KMS provides detailed AWS CloudTrail logs for auditing key usage and helps meet regulatory compliance requirements.

    Identity Center supports both single-Region and multi-Region keys to match your deployment needs. While Identity Center instances can currently only be deployed in a single Region, we recommend using multi-Region AWS KMS keys unless your company policies restrict you to single-Region keys. Multi-Region keys provide consistent key material across Regions while maintaining independent key infrastructure in each Region. This gives you more flexibility in your encryption strategy and helps future-proof your deployment.

    Let’s get started
    Let’s imagine I want to use a CMK to encrypt the identity data of my Identity Center organization instance. My organization uses Identity Center to give employees access to AWS managed applications, such as Amazon Q Business or Amazon Athena.

    As of today, some AWS managed applications cannot be used with Identity Center configured with a customer managed KMS key. See AWS managed applications that you can use with Identity Center to keep you updated with the ever evolving list of compatible applications.

    The high-level process requires first to create a symmetric customer managed key (CMK) in AWS KMS. The key must be configured for encrypt and decrypt operations. Next, I configure the key policies to grant access to Identity Center, AWS managed applications, administrators, and other principals who need access the Identity Center and IAM Identity Center service APIs. Depending on your usage of Identity Center, you’ll have to define different policies for the key and IAM policies for IAM principals. The service documentation has more details to help you cover the most common use cases.

    This demo is in three parts. I first create a customer managed key in AWS KMS and configure it with permissions that will authorize Identity Center and AWS managed applications to use it. Second, I update the IAM policies for the principals that will use the key from another AWS account, such as AWS applications administrators. Finally, I configure Identity Center to use the key.

    Part 1: Create the key and define permissions

    First, let’s create a new CMK in AWS KMS.

    AWS KMW, screate key, part 1

    The key must be in the same AWS Region and AWS account as the Identity Center instance. You must create the Identity Center instance and the key in the management account of your organization within AWS Organization.

    I navigate to the AWS Key Management Service (AWS KMS) console in the same Region as my Identity Center instance, then I choose Create a key. This launches me into the key creation wizard.

    AWS KMW, screate key, part 2

    Under Step 1–Configure key, I select the key type–either Symmetric (a single key used for both encryption and decryption) or Asymmetric (a public-private key pair for encryption/decryption and signing/verification). Identity Center requires symmetric keys for encryption at rest. I select Symmetric.

    For key usage, I select Encrypt and decrypt which allows the key to be used only for encrypting and decrypting data.

    Under Advanced options, I select KMS – recommended for Key material origin, so AWS KMS creates and manages the key material.

    For Regionality, I choose between Single-Region or Multi-Region key. I select Multi-Region key to allow key administrators to replicate the key to other Regions. As explained already, Identity Center doesn’t require this today but it helps to future-proof your configuration. Remember that you can not transform a single-Region key to a multi-Region one after its creation (but you can change the key used by Identity Center).

    Then, I choose Next to proceed with additional configuration steps, such as adding labels, defining administrative permissions, setting usage permissions, and reviewing the final configuration before creating the key.

    AWS KMS, screate key, part 3

    Under Step 2–Add Labels, I enter an Alias name for my key and select Next.

    In this demo, I am editing the key policy by adding policy statements using templates provided in the documentation. I skip Step 3 and Step 4 and navigate to Step 5–Edit key policy.

    AWS KMS, screate key, part 5

    Identity Center requires, at the minimum, permissions allowing Identity Center and its administrators to use the key. Therefore, I add three policy statements, the first and second authorize the administrators of the service, the third one to authorize the Identity Center service itself.

    {
    	"Version": "2012-10-17",
    	"Id": "key-consolepolicy-3",
    	"Statement": [
    		{
    			"Sid": "Allow_IAMIdentityCenter_Admin_to_use_the_KMS_key_via_IdentityCenter_and_IdentityStore",
    			"Effect": "Allow",
    			"Principal": {
    				"AWS": "ARN_OF_YOUR_IDENTITY_CENTER_ADMIN_IAM_ROLE"
    			},
    			"Action": [
    				"kms:Decrypt",
    				"kms:Encrypt",
    				"kms:GenerateDataKeyWithoutPlaintext"
    			],
    			"Resource": "*",
    			"Condition": {
    				"StringLike": {
    					"kms:ViaService": [
    						"sso.*.amazonaws.com",
    						"identitystore.*.amazonaws.com"
    					]
    				}
    			}
    		},
    		{
    			"Sid": "Allow_IdentityCenter_admin_to_describe_the_KMS_key",
    			"Effect": "Allow",
    			"Principal": {
    				"AWS": "ARN_OF_YOUR_IDENTITY_CENTER_ADMIN_IAM_ROLE"
    			},
    			"Action": "kms:DescribeKey",
    			"Resource": "*"
    		},
    		{
    			"Sid": "Allow_IdentityCenter_and_IdentityStore_to_use_the_KMS_key",
    			"Effect": "Allow",
    			"Principal": {
    				"Service": [
    					"sso.amazonaws.com",
    					"identitystore.amazonaws.com"
    				]
    			},
    			"Action": [
    				"kms:Decrypt",
    				"kms:ReEncryptTo",
    				"kms:ReEncryptFrom",
    				"kms:GenerateDataKeyWithoutPlaintext"
    			],
    			"Resource": "*",
                "Condition": {
        	       "StringEquals": { 
                          "aws:SourceAccount": "<Identity Center Account ID>" 
    	           }
                }		
    		},
    		{
    			"Sid": "Allow_IdentityCenter_and_IdentityStore_to_describe_the_KMS_key",
    			"Effect": "Allow",
    			"Principal": {
    				"Service": [
    					"sso.amazonaws.com",
    					"identitystore.amazonaws.com"
    				]
    			},
    			"Action": [
    				"kms:DescribeKey"
    			],
    			"Resource": "*"
    		}		
    	]
    }

    I also have to add additional policy statements to allow my use case: the use of AWS managed applications. I add these two policy statements to authorize AWS managed applications and their administrators to use the KMS key. The document lists additional use cases and their respective policies.

    {
        "Sid": "Allow_AWS_app_admins_in_the_same_AWS_organization_to_use_the_KMS_key",
        "Effect": "Allow",
        "Principal": "*",
        "Action": [
            "kms:Decrypt"
        ],
        "Resource": "*",
        "Condition": {
            "StringEquals" : {
               "aws:PrincipalOrgID": "MY_ORG_ID (format: o-xxxxxxxx)"
            },
            "StringLike": {
                "kms:ViaService": [
                    "sso.*.amazonaws.com", "identitystore.*.amazonaws.com"
                ]
            }
        }
    },
    {
       "Sid": "Allow_managed_apps_to_use_the_KMS_Key",
       "Effect": "Allow",
       "Principal": "*",
       "Action": [
          "kms:Decrypt"
        ],
       "Resource": "*",
       "Condition": {
          "Bool": { "aws:PrincipalIsAWSService": "true" },
          "StringLike": {
             "kms:ViaService": [
                 "sso.*.amazonaws.com", "identitystore.*.amazonaws.com"
             ]
          },
          "StringEquals": { "aws:SourceOrgID": "MY_ORG_ID (format: o-xxxxxxxx)" }
       }
    }

    You can further restrict the key usage to a specific Identity Center instance, specific application instances, or specific application administrators. The documentation contains examples of advanced key policies for your use cases.

    To help protect against IAM role name changes when permission sets are recreated, use the approach described in the Custom trust policy example.

    Part 2: Update IAM policies to allow use of the KMS key from another AWS account

    Any IAM principal that uses the Identity Center service APIs from another AWS account, such as Identity Center delegated administrators and AWS application administrators, need an IAM policy statement that allows use of the KMS key via these APIs.

    I grant permissions to access the key by creating a new policy and attaching the policy to the IAM role relevant for my use case. You can also add these statements to the existing identity-based policies of the IAM role.

    To do so, after the key is created, I locate its ARN and replace the key_ARNin the template below. Then, I attach the policy to the managed application administrator IAM principal. The documentation also covers IAM policies that grants Identity Center delegated administrators permissions to access the key.

    Here is an example for managed application administrators:

    {
          "Sid": "Allow_app_admins_to_use_the_KMS_key_via_IdentityCenter_and_IdentityStore",
          "Effect": "Allow",
          "Action": 
            "kms:Decrypt",
          "Resource": "<key_ARN>",
          "Condition": {
            "StringLike": {
              "kms:ViaService": [
                "sso.*.amazonaws.com",
                "identitystore.*.amazonaws.com"
              ]
            }
          }
        }

    The documentation shares IAM policies template for the most common use cases.

    Part 3: Configure IAM Identity Center to use the key

    I can configure a CMK either during the enablement of an Identity Center organization instance or on an existing instance, and I can change the encryption configuration at any time by switching between CMKs or reverting to AWS-owned keys.

    Please note that an incorrect configuration of KMS key permissions can disrupt Identity Center operations and access to AWS managed applications and accounts through Identity Center. Proceed carefully to this final step and ensure you have read and understood the documentation.

    After I have created and configured my CMK, I can select it under Advanced configuration when enabling Identity Center.

    IDC with CMK configuration

    To configure a CMK on an existing Identity Center instance using the AWS Management Console, I start by navigating to the Identity Center section of the AWS Management Console. From there, I select Settings from the navigation pane, then I select the Management tab, and select Manage encryption in the Key for encrypting IAM Identity Center data at rest section.

    Change key on existing IDC

    At any time, I can select another CMK from the same AWS Account, or switch back to an AWS-managed key.

    After choosing Save, the key change process takes a few seconds to complete. All service functionalities continue uninterrupted during the transition. If, for whatever reasons, Identity Center can not access the new key, an error message will be returned and Identity Center will continue to use the current key, keeping your identity data encrypted with the mechanism it is already encrypted with.

    CMK on IDC, select a new key

    Things to keep in mind
    The encryption key you create becomes a crucial component of your Identity Center. When you choose to use your own managed key to encrypt identity attributes at rest, you have to verify the following points.

    • Have you configured the necessary permissions to use the KMS key? Without proper permissions, enabling the CMK may fail or disrupt IAM Identity Center administration and AWS managed applications.
    • Have you verified that your AWS managed applications are compatible with CMK keys? For a list of compatible applications, see AWS managed applications that you can use with IAM Identity Center. Enabling CMK for Identity Center that is used by AWS managed applications incompatible with CMK will result in operational disruption for those applications. If you have incompatible applications, do not proceed.
    • Is your organization using AWS managed applications that require additional IAM role configuration to use the Identity Center and Identity Store APIs? For each such AWS managed application that’s already deployed, check the managed application’s User Guide for updated KMS key permissions for IAM Identity Centre usage and update them as instructed to prevent application disruption.
    • For brevity, the KMS key policy statements in this post omit the encryption context, which allows you to restrict the use of the KMS key to Identity Center including a specific instance. For your production scenarios, you can add a condition like this for Identity Center:
      "Condition": {
         "StringLike": {
            "kms:EncryptionContext:aws:sso:instance-arn": "${identity_center_arn}",
            "kms:ViaService": "sso.*.amazonaws.com"
          }
      }

      or this for Identity Store:

      "Condition": {
         "StringLike": {
            "kms:EncryptionContext:aws:identitystore:identitystore-arn": "${identity_store_arn}",
            "kms:ViaService": "identitystore.*.amazonaws.com"
          }
      }

    Pricing and availability
    Standard AWS KMS charges apply for key storage and API usage. Identity Center remains available at no additional cost.

    This capability is now available in all AWS commercial Regions, AWS GovCloud (US), and AWS China Regions. To learn more, visit the IAM Identity Center User Guide.

    We look forward to learning how you use this new capability to meet your security and compliance requirements.

    — seb

    Modernize Amazon Redshift authentication by migrating user management to AWS IAM Identity Center

    Post Syndicated from Ziad Wali original https://aws.amazon.com/blogs/big-data/modernize-amazon-redshift-authentication-by-migrating-user-management-to-aws-iam-identity-center/

    Amazon Redshift is a powerful cloud-based data warehouse that organizations can use to analyze both structured and semi-structured data through advanced SQL queries. As a fully managed service, it provides high performance and scalability while allowing secure access to the data stored in the data warehouse. Organizations worldwide rely on Amazon Redshift to handle massive datasets, upgrade their analytics capabilities, and deliver valuable business intelligence to their stakeholders.

    AWS IAM Identity Center serves as the preferred platform for controlling workforce access to AWS tools, including Amazon Q Developer. It allows for a single connection to your existing identity provider (IdP), creating a unified view of users across AWS applications and applying trusted identity propagation for a smooth and consistent experience.

    You can access data in Amazon Redshift using local users or external users. A local user in Amazon Redshift is a database user account that is created and managed directly within the Redshift cluster itself. Amazon Redshift also integrates with IAM Identity Center, and supports trusted identity propagation, so you can use third-party IdPs such as Microsoft Entra ID (Azure AD), Okta, Ping, OneLogin, or use IAM Identity Center as an identity source. The IAM Identity Center integration with Amazon Redshift supports centralized authentication and SSO capabilities, simplifying access management across multi-account environments. As organizations grow in scale, it is recommended to use external users for cross-service integration and centralized access management.

    In this post, we walk you through the process of smoothly migrating your local Redshift user management to IAM Identity Center users and groups using the RedshiftIDCMigration utility.

    Solution overview

    The following diagram illustrates the solution architecture.

    The RedshiftIDCMigration utility accelerates the migration of your local Redshift users, groups, and roles to your IAM Identity Center instance by performing the following activities:

    • Create users in IAM Identity Center for every local user in a given Redshift instance.
    • Create groups in IAM Identity Center for every group or role in a given Redshift instance.
    • Assign users to groups in IAM Identity Center according to existing assignments in the Redshift instance.
    • Create IAM Identity Center roles in the Redshift instance matching the groups created in IAM Identity Center.
    • Grant permissions to IAM Identity Center roles in the Redshift instance based on the current permissions given to local groups and roles.

    Prerequisites

    Before running the utility, complete the following prerequisites:

    1. Enable IAM Identity Center in your account.
    2. Follow the steps in the post Integrate Identity Provider (IdP) with Amazon Redshift Query Editor V2 and SQL Client using AWS IAM Identity Center for seamless Single Sign-On (specifically, follow Steps 1–8, skipping Steps 4 and 6).
    3. Configure the IAM Identity Center application assignments:
      1. On the IAM Identity Center console, choose Application Assignments and Applications.
      2. Select your application and on the Actions dropdown menu, choose Edit details.
      3. For User and group assignments, choose Do not require assignments. This setting makes it possible to test Amazon Redshift connectivity without configuring specific data access permissions.
    4. Configure IAM Identity Center authentication with administrative access from either Amazon Elastic Compute Cloud (Amazon EC2) or AWS CloudShell.

    The utility will be run from either an EC2 instance or CloudShell. If you’re using an EC2 instance, an IAM role is attached to the instance. Make sure that the IAM role used during the execution has the following permissions (if not, create a new policy with those permissions and attach it to the IAM role):

    • Amazon Redshift permissions (for serverless):
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "VisualEditor0",
                "Effect": "Allow",
                "Action": [
                    "redshift-serverless:GetCredentials",
                    "redshift-serverless:GetNamespace",
                    "redshift-serverless:GetWorkgroup"
                ],
                "Resource": [
                    "arn:aws:redshift-serverless:${region}:${account-id}:namespace/${namespace-id}",
                    "arn:aws:redshift-serverless:${region}:${account-id}:workgroup/${workgroup-id}"
                ]
            },
            {
                "Sid": "VisualEditor1",
                "Effect": "Allow",
                "Action": [
                    "redshift-serverless:ListNamespaces",
                    "redshift-serverless:ListWorkgroups"
                ],
                "Resource": "*"
            },
            {
                "Sid": "VisualEditor2",
                "Effect": "Allow",
                "Action": [
                    "redshift:CreateClusterUser",
                    "redshift:JoinGroup",
                    "redshift:GetClusterCredentials",
                    "redshift:ExecuteQuery",
                    "redshift:FetchResults",
                    "redshift:DescribeClusters",
                    "redshift:DescribeTable"
                ],
                "Resource": [
                    "arn:aws:redshift:${region}:${account-id}:cluster:redshift-serverless-${workgroup-name}",
                    "arn:aws:redshift:${region}:${account-id}:dbgroup:redshift-serverless-${workgroup-name}/${dbgroup}",
                    "arn:aws:redshift:${region}:${account-id}:dbname:redshift-serverless-${workgroup-name}/${dbname}",
                    "arn:aws:redshift:${region}:${account-id}:dbuser:redshift-serverless-${workgroup-name}/${dbuser}"
                ]
            }
        ]
    }
    • Amazon Redshift permissions (for provisioned):
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "VisualEditor0",
                "Effect": "Allow",
                "Action": "redshift:GetClusterCredentials",
                "Resource": [
                    "arn:aws:redshift: ${region}:${account-id}:dbname:${cluster_name}/${dbname}",
                    "arn:aws:redshift: ${region}: ${account-id}:dbuser:${cluster-name}/${dbuser}"
                ]
            },
            {
                "Sid": "VisualEditor1",
                "Effect": "Allow",
                "Action": [
                    "redshift:DescribeClusters",
                    "redshift:ExecuteQuery",
                    "redshift:FetchResults",
                    "redshift:DescribeTable"
                ],
                "Resource": "*"
            }
        ]
    }
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "VisualEditor0",
                "Effect": "Allow",
                "Action": [
                    "s3:PutObject",
                    "s3:GetObject",
                    "s3:GetEncryptionConfiguration",
                    "s3:ListBucket",
                    "s3:DeleteObject"
                ],
                "Resource": [
                    "arn:aws:s3:::${s3_bucket_name}/*",
                    "arn:aws:s3:::${s3_bucket_name}"
                ]
            }
        ]
    }
    • Identity store permissions:
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "VisualEditor0",
                "Effect": "Allow",
                "Action": "identitystore:*",
                "Resource": [
                    "arn:aws:identitystore:::group/*",
                    "arn:aws:identitystore:::user/*",
                    "arn:aws:identitystore::${account_id}:identitystore/${identity_store_id}",
                    "arn:aws:identitystore:::membership/*"
                ]
            },
            {
                "Sid": "VisualEditor1",
                "Effect": "Allow",
                "Action": "identitystore:*",
                "Resource": [
                    "arn:aws:identitystore:::membership/*",
                    "arn:aws:identitystore:::user/*",
                    "arn:aws:identitystore:::group/*"
                ]
            }
        ]
    }

    Artifacts

    Download the following utility artifacts from the GitHub repo:

    • idc_redshift_unload_indatabase_groups_roles_users.py – A Python script to unload users, groups, roles and their associations.
    • redshift_unload.ini – The config file used in the preceding script to read Redshift data warehouse details and Amazon S3 locations to unload the files.
    • idc_add_users_groups_roles_psets.py – A Python script to create users and groups in IAM Identity Center, and then associate the users to groups in IAM Identity Center.
    • idc_config.ini – The config file used in the preceding script to read IAM Identity Center details.
    • vw_local_ugr_to_idc_urgr_priv.sql – A script that generates SQL statements that perform two tasks in Amazon Redshift:
      • Create roles that exactly match your IAM Identity Center group names, adding a specified prefix.
      • Grant appropriate permissions to these newly created Redshift roles.

    Testing scenario

    This test case is designed to offer practical experience and familiarize you with the utility’s functionality. The scenario is structured around a hierarchical nested roles system, starting with object-level permissions assigned to technical roles. These technical roles are then allocated to business roles. Finally, business roles are granted to individual users. To enhance the testing environment, the scenario also incorporates a user group.The following diagram illustrates this hierarchy.

    Create datasets

    Set up two separate schemas (tickit and tpcds) in a Redshift database using the create schema command. Then, create and populate a few tables in each schema using the tickit and tpcds sample datasets.

    Specify the appropriate IAM role Amazon Resource Name (ARN) in the copy commands if necessary.

    Create users

    Create users with the following code:

    -- ETL users
    create user etl_user_1 password 'EtlUser1!';
    create user etl_user_2 password 'EtlUser2!';
    create user etl_user_3 password 'EtlUser3!';
    
    -- Reporting users
    create user reporting_user_1 password 'ReportingUser1!';
    create user reporting_user_2 password 'ReportingUser2!';
    create user reporting_user_3 password 'ReportingUser3!';
    
    -- Adhoc users
    create user adhoc_user_1 password 'AdhocUser1!';
    create user adhoc_user_2 password 'AdhocUser2!';
    
    -- Analyst users
    create user analyst_user_1 password 'AnalystUser1!';

    Create business roles

    Create business users with the following code:

    -- ETL business roles
    create role role_bn_etl_tickit;
    create role role_bn_etl_tpcds;
    
    -- Reporting business roles
    create role role_bn_reporting_tickit;
    create role role_bn_reporting_tpcds;
    
    -- Analyst business roles
    create role role_bn_analyst_tickit;

    Create technical roles

    Create technical roles with the following code:

    -- Technical roles for tickit schema
    create role role_tn_sel_tickit;
    create role role_tn_dml_tickit;
    create role role_tn_cte_tickit;
    
    -- Technical roles for tpcds schema
    create role role_tn_sel_tpcds;
    create role role_tn_dml_tpcds;
    create role role_tn_cte_tpcds;

    Create groups

    Create groups with the following code:

    -- Adhoc users group
    create group group_adhoc;

    Grant rights to technical roles

    To grant rights to the technical roles, use the following code:

    -- role_tn_sel_tickit
    grant usage on schema tickit to role role_tn_sel_tickit;
    grant select on all tables in schema tickit to role role_tn_sel_tickit;
    
    -- role_tn_dml_tickit
    grant usage on schema tickit to role role_tn_dml_tickit;
    grant insert, update, delete on all tables in schema tickit to role role_tn_dml_tickit;
    
    -- role_tn_cte_tickit
    grant usage, create on schema tickit to role role_tn_cte_tickit;
    grant drop on all tables in schema tickit to role role_tn_cte_tickit;
    
    -- role_tn_sel_tpcds
    grant usage on schema tpcds to role role_tn_sel_tpcds;
    grant select on all tables in schema tpcds to role role_tn_sel_tpcds;
    
    -- role_tn_dml_tpcds
    grant usage on schema tpcds to role role_tn_dml_tpcds;
    grant insert, update, delete on all tables in schema tpcds to role role_tn_dml_tpcds;
    
    -- role_tn_cte_tpcds
    grant usage, create on schema tpcds to role role_tn_cte_tpcds;
    grant drop on all tables in schema tpcds to role role_tn_cte_tpcds;

    Grant technical roles to business roles

    To grant the technical roles to the business roles, use the following code:

    -- Business role role_bn_etl_tickit
    grant role role_tn_sel_tickit to role role_bn_etl_tickit;
    grant role role_tn_dml_tickit to role role_bn_etl_tickit;
    grant role role_tn_cte_tickit to role role_bn_etl_tickit;
    
    -- Business role role_bn_etl_tpcds
    grant role role_tn_sel_tpcds to role role_bn_etl_tpcds;
    grant role role_tn_dml_tpcds to role role_bn_etl_tpcds;
    grant role role_tn_cte_tpcds to role role_bn_etl_tpcds;
    
    -- Business role role_bn_reporting_tickit
    grant role role_tn_sel_tickit to role role_bn_reporting_tickit;
    
    -- Business role role_bn_reporting_tpcds
    grant role role_tn_sel_tpcds to role role_bn_reporting_tpcds;
    
    -- Business role role_bn_analyst_tickit
    grant role role_tn_sel_tickit to role role_bn_analyst_tickit;

    Grant business roles to users

    To grant the business roles to users, use the following code:

    -- etl_user_1
    grant role role_bn_etl_tickit to etl_user_1;
    
    -- etl_user_2
    grant role role_bn_etl_tpcds to etl_user_2;
    
    -- etl_user_3
    grant role role_bn_etl_tickit to etl_user_3;
    grant role role_bn_etl_tpcds to etl_user_3;
    
    -- reporting_user_1
    grant role role_bn_reporting_tickit to reporting_user_1;
    
    -- reporting_user_2
    grant role role_bn_reporting_tpcds to reporting_user_2;
    
    -- reporting_user_3
    grant role role_bn_reporting_tickit to reporting_user_3;
    grant role role_bn_reporting_tpcds to reporting_user_3;
    
    -- analyst_user_1
    grant role role_bn_analyst_tickit to analyst_user_1;

    Grant rights to groups

    To grant rights to the groups, use the following code:

    -- Group group_adhoc
    grant usage on schema tickit to group group_adhoc;
    grant select on all tables in schema tickit to group group_adhoc;
    
    grant usage on schema tpcds to group group_adhoc;
    grant select on all tables in schema tpcds to group group_adhoc;

    Add users to groups

    To add users to the groups, use the following code:

    alter group group_adhoc add user adhoc_user_1;
    alter group group_adhoc add user adhoc_user_2;

    Deploy the solution

    Complete the following steps to deploy the solution:

    1. Update Redshift cluster or serverless endpoint details and Amazon S3 location in redshift_unload.ini:
      • cluster_type = provisioned or serverless
      • cluster_id = ${cluster_identifier} (required if cluster_type is provisioned)
      • db_user = ${database_user}
      • db_name = ${database_name}
      • host = ${host_url} (required if cluster_type is provisioned)
      • port = ${port_number}
      • workgroup_name = ${workgroup_name} (required if cluster_type is serverless)
      • region = ${region}
      • s3_bucket = ${S3_bucket_name}
      • roles = roles.csv
      • users = users.csv
      • role_memberships = role_memberships.csv
    2. Update IAM Identity Center details in idc_config.ini:
      • region = ${region}
      • account_id = ${account_id}
      • identity_store_id = ${identity_store_id} (available on the IAM Identity Center console Settings page)
      • instance_arn = ${iam_identity_center_instance_arn} (available on the IAM Identity Center console Settings page)
      • permission_set_arn = ${permission_set_arn}
      • assign_permission_set = True or False (True if permission_set_arn is defined)
      • s3_bucket = ${S3_bucket_name}
      • users_file = users.csv
      • roles_file = roles.csv
      • role_memberships_file = role_memberships.csv
    3. Create a directory in CloudShell or on your own EC2 instance with connectivity to Amazon Redshift.
    4. Copy the two .ini files and download the Python scripts to that directory.
    5. Run idc_redshift_unload_indatabase_groups_roles_users.py either from CloudShell or your EC2 instance:python idc_redshift_unload_indatabase_groups_roles_users.py
    6. Run idc_add_users_groups_roles_psets.py either from CloudShell or your EC2 instance:python idc_add_users_groups_roles_psets.py
    7. Connect your Redshift cluster using the Amazon Redshift query editor v2 or preferred SQL client, using superuser credentials.
    8. Copy the SQL in the vw_local_ugr_to_idc_urgr_priv.sql file and run it in the query editor to create the vw_local_ugr_to_idc_urgr_priv view.
    9. Run following SQL command to generate the SQL statements for creating roles and permissions:
      select existing_grants,idc_based_grants from vw_local_ugr_to_idc_urgr_priv;

      For example, consider the following existing grants:

      CREATE GROUP "group_adhoc";
      CREATE ROLE "role_bn_etl_tickit";
      GRANT USAGE ON SCHEMA tpcds TO role "role_tn_sel_tpcds" ;

      These grants are converted to the following code:

      CREATE role "AWSIDC:group_adhoc";
      CREATE role "AWSIDC:role_bn_etl_tickit";
      GRANT USAGE ON SCHEMA tpcds TO role "AWSIDC:role_tn_sel_tpcds";

    10. Review the statements in the idc_based_grants column.
      This might not be a comprehensive list of permissions, so review them carefully.
    11. If everything is correct, run the statements from the SQL client.

    When you have completed the process, you should have the following configuration:

    • IAM Identity Center now contains newly created users from Amazon Redshift
    • The Redshift local groups and roles are created as groups in IAM Identity Center
    • New roles are established in Amazon Redshift, corresponding to the groups created in IAM Identity Center
    • The newly created Redshift roles are assigned appropriate permissions

    If you encounter an issue while connecting to Amazon Redshift with the query editor using IAM Identity Center, refer to Troubleshooting connections from Amazon Redshift query editor v2.

    Considerations

    Consider the following when using this solution:

    • At the time of writing, creating permissions in AWS Lake Formation is not in scope.
    • IAM Identity Center and IdP integration setup is out of scope for this utility. However, you can use the view vw_local_ugr_to_idc_urgr_priv.sqlto create roles and grant permissions to the IdP users and groups passed through IAM Identity Center.
    • If you have permissions given directly to local user IDs (not using groups or roles), you must change that to a role-based permission approach for IAM Identity Center integration. Create roles and provide permissions using roles instead of directly giving permissions to users.

    Clean up

    If you have completed the testing scenario, clean up your environment:

    1. Remove the new Redshift roles that were created by the utility, corresponding to the groups established in IAM Identity Center.
    2. Delete the users and groups created by the utility within IAM Identity Center.
    3. Delete the users, groups, and roles specified in the testing scenario.
    4. Drop the tickit and tpcds schemas.

    You can use the FORCE parameter when dropping the roles to remove associated assignments.

    Conclusion

    In this post, we showed how to migrate your Redshift local user management to IAM Identity Center. This transition offers several key advantages for your organization, such as simplified access management through centralized user and group administration, a streamlined user experience across AWS services, and reduced administrative overhead. You can implement this migration process step by step, so you can test and validate each step before fully transitioning your production environment.

    As organizations continue to scale their AWS infrastructure, using IAM Identity Center becomes increasingly valuable for maintaining secure and efficient access management, including Amazon SageMaker Unified Studio for an integrated experience for all your data and AI.


    About the authors

    Ziad Wali

    Ziad Wali

    Ziad is an Analytics Specialist Solutions Architect at AWS. He has over 10 years of experience in databases and data warehousing, where he enjoys building reliable, scalable, and efficient solutions. Outside of work, he enjoys sports and spending time in nature.

    Satesh Sonti

    Satesh Sonti

    Satesh is a Sr. Analytics Specialist Solutions Architect based out of Atlanta, specializing in building enterprise data platforms, data warehousing, and analytics solutions. He has over 19 years of experience in building data assets and leading complex data platform programs for banking and insurance clients across the globe.

    Maneesh Sharma

    Maneesh Sharma

    Maneesh is a Senior Database Engineer at AWS with more than a decade of experience designing and implementing large-scale data warehouse and analytics solutions. He collaborates with various Amazon Redshift Partners and customers to drive better integration.

    Sumanth Punyamurthula

    Sumanth Punyamurthula

    Sumanth is a Senior Data and Analytics Architect at AWS with more than 20 years of experience in leading large analytical initiatives, including analytics, data warehouse, data lakes, data governance, security, and cloud infrastructure across travel, hospitality, financial, and healthcare industries.

    Managing Amazon Q Developer Profiles and Customizations in Large Organizations

    Post Syndicated from Marco Frattallone original https://aws.amazon.com/blogs/devops/managing-amazon-q-developer-profiles-and-customizations-in-large-organizations/

    As organizations scale their development efforts, AI coding assistants that understand organization-specific patterns and standards lead to more efficient development processes and higher quality software delivery. Amazon Q Developer Pro helps address this challenge by allowing organizations to customize the AI assistant with their proprietary code and development practices. Through Amazon Q Developer profiles, teams can efficiently manage access to Amazon Q customizations across different regions and AWS Identity Centers.

    In this post, we will explore different approaches for implementing and managing Amazon Q Developer profiles and Amazon Q customizations across large organizations. Using an example with multiple business units, we will explore methods for managing access controls and customization governance while addressing security and compliance requirements.

    Amazon Q customization is now available in both the US East (N. Virginia) and EU Central (Frankfurt) regions, giving teams more flexibility to create and deploy customizations closer to their operational hubs while meeting regional data residency requirements.

    This blog is not intended to provide recommendations on how to structure your AWS accounts or divide Q Developer subscriptions. Rather, our aim is to explore the full capabilities of Q Developer Customizations in a comprehensive scenario that shows the current art of the possible.

    A distributed Amazon Q Developer Pro subscriptions scenario

    The following diagram illustrates a sample AWS Organizations structure with a Management Account and four Organizational Units (OUs). This is a common enterprise scenario with three business units, each business unit requiring their own Amazon Q Developer Pro subscription and customizations.

    Diagram showing AWS Organizations structure with a Management Account at the top, containing AWS Organizations, IAM Identity Center, Amazon Q, Management Customizations, and AWS Cost & Usage Report. Below are four Organizational Units (OUs): Infrastructure, Alpha, Bravo, and Charlie. The structure illustrates the hierarchical relationship and resource allocation across different OUs and regions within an AWS organization.

    Figure 1: AWS Organizations Structure and Resource Hierarchy

    The Infrastructure OU has a Delegated Admin Account with delegated access to the AWS IAM Identity Center. There are three additional OUs: Alpha, Bravo, and Charlie, each with at least one Amazon Q Developer Pro subscription. Alpha account has Amazon Q Developer subscriptions both in US East (N. Virginia) and EU Central (Frankfurt) region.

    Think of each business unit as its own ecosystem within your organization. When you provide dedicated Q Developer Pro subscriptions to different OUs, you’re essentially giving each unit its own personalized AI assistant. This separation is valuable because it allows each team to work independently while maintaining their specific requirements and workflows.

    The Charlie OU maintains its own account instance of IAM Identity Center for Amazon Q Developer Pro. In most cases, we recommend using an organization instance of IAM Identity Center with Amazon Q Developer Pro, there are a few situations where member account instances might make sense, for example: when you do not have a single identity provider, or when you haven’t yet decided to deploy it to the whole organization and want to use Amazon Q just for the AWS account you control.

    Note: When a developer has a user within an Amazon Q profile tied to two different IAM Identity Center instances (Bravo and Charlie), they will have two user subscriptions and be billed twice. However, if they belong to two different Amazon Q profiles in two different accounts (Alpha and Bravo) but under the same IAM Identity Center, they will only be billed once.

    In our example, the Charlie OU requires additional operational overhead in managing separate credentials and authentication flows. Additionally, the dashboard and administrative settings will only be associated with users and groups within this account.
    From an administrative perspective, instead of trying to manage one centralized configuration that attempts to serve everyone’s needs, you can distribute administration to each business unit and delegate responsibility to individual teams.

    It’s like having different specialized departments in a hospital – while they’re all part of the same organization and can work together when needed, each department has its own specialized tools and protocols that help them perform their specific functions more effectively.

    A strategic approach to Customizations through Q Developer profiles

    A diagram illustrating the structure of an AWS IAM Identity Center organization with multiple Amazon Q Developer Pro subscriptions and customizations. Each Q Developer Pro Subscription has its own set of users representing developers. Team orange developers have access to Alpha Q Subscription and customizations, Team blue developers have access to Alpha, Bravo and Charlie Q Subscription and customizations, Team Grey developers have only access to Bravo Subscription and customizations. The organization has also an AWS IAM Identity Center instance, with separate Amazon Q Developer Pro subscription and customizations. Team bravo developers are duplicated between the two IAM Identity Centers.

    Figure 2 Developers association to Amazon Q Developer Pro Subscriptions, Customizations and IAM Identity Centers

    Amazon Q Developer profiles are the way developers connect to different Amazon Q Developer subscriptions through their IDE. Each profile represents a unique combination of an Amazon Q Developer subscription and its associated customizations. After authentication, developers can simply select or switch between profiles in their IDE to access different customizations.

    Let’s walk through some scenarios in this architecture.

    Scenario 1 – Users accessing two different customizations tied to a single IAM Identity Instance in the management account

    Developers from the Orange team with access to Alpha account customizations can configure two different Amazon Q Developer profiles in their IDE:

    • A “US Profile” connected to the US East subscription in the Alpha account
    • An “EU Profile” connected to the EU Central subscription in the Alpha account

    Switching between different sets of customizations involves selecting the relevant profile within their IDE.

    Screenshot of IDE interface showing the Amazon Q Developer customizations panel. Developer switch between US and EU Profiles and their customizations

    Figure 3 IDE showing customizations available for Team Orange developers switching between US and EU Profile and their customizations

    Note: While developers can access multiple customizations through different Amazon Q Developer profiles, they only incur a single user subscription cost since they are using the organization instance of IAM Identity Center. This is because the subscription is tied to their user identity in the IAM Identity Center organization instance, not to the number of profiles or customizations they access.

    Scenario 2 – Users accessing two different customizations tied to a single IAM Identity Instance in the management account
    Similarly, developers from the Blue team can also configure multiple profiles:

    • One profile for accessing Alpha and Bravo customizations through the management account AWS IAM Identity Center instance
    • A separate profile for accessing Charlie customizations through the AWS IAM Identity Center member account Instance

    When developers have access to multiple customizations within the same IAM Identity Center configuration and region, they can switch between profiles in their IDE without requiring reauthentication.

    Screenshot of IDE interface showing the Amazon Q Developer customizations panel. When authenticated through the AWS IAM Identity Center Organization, Blue developers can see both Alpha and Bravo customizations.

    Figure 4 IDE showing customizations available for Team Blue developers when authenticated to AWS IAM Identity center Organization

    However, as demonstrated in the blue developers’ case, switching between profiles that use different IAM Identity Center configurations (Organization vs Account Instance) still requires reauthentication.

    Note: In this scenario, developers will incur two separate user subscription charges since they are accessing customizations through two different IAM Identity Center configurations (organization and account instance). As mentioned above, this scenario is not recommended except for situations it might make sense and is shown here purely to illustrate how the authentication and profile switching mechanisms work across different IAM Identity Center configurations.

    Screenshot of IDE interface showing the Amazon Q Developer customizations panel. When authenticated through the AWS IAM Identity Center Instance, Blue developers can see only Charlie customizations.

    Figure 5 IDE showing customizations available for Team Blue developers when authenticated to AWS IAM Identity center Account Instance

    One scenario for creating code customizations specific to each profile is that the developers on the Alpha team might need Q to understand specific libraries and internal coding conventions for Java, while Bravo team developers might need Q to be well-versed in your proprietary technologies and development standards with Python. With separate profiles and customizations, each team gets their own “flavored” version of Q that understands their context.

    For Blue developers who have access to Alpha, Bravo and Charlie customizations, they need to set up separate profiles since these customizations belong to different IAM Identity Center configurations and AWS Regions. Switching between these profiles requires reauthentication due to the different IAM Identity Center configurations involved.

    Developer Team AWS IAM Identity Center Customizations
    Orange Organization instance Alpha customizations in US East (N. Virginia)
    Alpha customizations in EU Central (Frankfurt)
    Blue Organization instance Alpha customizations in US East (N. Virginia)
    Bravo customizations
    Account instance Charlie customizations
    Grey Organization instance Bravo customizations

    You can manage access to specific Amazon Q Developer Pro customizations by adding selected users and groups who already have access to Amazon Q Developer Pro subscriptions within the same Identity Center. This granular access control allows you to create targeted customizations that are only accessible to specific team members or groups within your organization.

    Conclusion

    In this post, we explored comprehensive strategies for implementing Amazon Q Developer customizations across large organizations. We demonstrated how Amazon Q Developer profiles provide a flexible way to manage access to different customizations across AWS regions and IAM Identity Center configurations. By integrating proprietary code repositories, establishing customization governance, and implementing continuous feedback loops, enterprises can maximize the value of their AI-powered development assistant while maintaining code quality and development standards.

    The path forward depends on where you are in your Amazon Q Developer customization journey. If you’re just starting, begin with a clear assessment of your codebase and map out your customization approach before implementation. For existing users, review your current customizations and profile configurations to identify optimization opportunities.

    In both cases, implement the customization governance we discussed, tailoring them to your specific development patterns and team structures. Remember that customization evolves with your codebase – regular refinements help ensure your AI assistant remains effective as your applications grow and development practices mature. Whether you’re new to Amazon Q Developer customizations or optimizing existing implementations, these practices can help develop an AI assistant that truly understands and aligns with your organization’s unique development environment.

    Ready to get started? Visit the Amazon Q Developer guide to learn more about setting up profiles and customizations for your organization. If you need help planning your customization strategy, contact your AWS account team or find an AWS Partner in the AWS Partner Network.

    About the authors:

    Marco Frattallone

    Marco Frattallone is a Senior Technical Account Manager at AWS focused on supporting Partners. He works closely with Partners to help them build, deploy, and optimize their solutions on AWS, providing guidance and leveraging best practices. Marco is passionate about technology and enables Partners stay at the forefront of innovation. Outside work, he enjoys outdoor cycling, sailing, and exploring new cultures.

    Francesco Martini

    Francesco Martini is a Senior Technical Account Manager at AWS. He helps AWS customers build reliable and cost-effective systems and achieve operational excellence while running workloads on AWS. He is a builder and a technology enthusiast with a background as a full-stack developer. He is passionate about sports in general, especially soccer and tennis.

    Accelerate development with secure access to Amazon Q Developer using PingIdentity

    Post Syndicated from Sid Vantair original https://aws.amazon.com/blogs/devops/accelerate-development-with-secure-access-to-amazon-q-developer-using-pingidentity/

     Overview

    Customers adopting Amazon Q Developer, a generative AI-powered coding companion, often need authentication through existing identity providers like PingIdentity. By leveraging AWS IAM Identity Center, organizations can enable their developers to access Amazon Q Developer with their existing PingIdentity credentials, streamlining authentication and removing the need for separate login procedures. Amazon Q Developer can chat about code, provide inline code completions, and generate new code. It also scans your code for security vulnerabilities and makes code improvements, including language updates, debugging, and optimizations. Amazon Q Developer comes in two tiers. The Free Tier is available at no cost for individual use. The Pro Tier is a paid version offering enterprise access controls, an analytics dashboard, customization, and higher usage limits. Organizations that enable the Pro tier of Amazon Q Developer for their developers typically authenticate with AWS IAM Identity Center. This approach is popular due to its ability to federate with external identity providers. In this blog, we will show you how to set up PingIdentity as an external IdP for IAM Identity Center and allow developers to access Amazon Q Developer using their existing PingIdentity login credentials.

    How it works

    AWS authentication flow diagram: Developers interact with Amazon Q Developer and AWS IAM Identity Center, integrating with Ping Identity for SAML-based access.

    Figure 1 – Solution Overview

    The authentication workflow is as follows:

    1. The developer initiates an access request to Amazon Q Developer.
    2. IAM Identity center checks authentication status.
    3. If not authenticated, redirects to PingIdentity login.
    4. Developer provides PingIdentity Credentials.
    5. PingIdentity validates credentials and sends SAML response.
    6. IAM Identity Center verifies the SAML response.
    7. Upon successful verification, grants Amazon Q Developer access.
    8. Developer begins using Amazon Q Developer.

    Prerequisites

    • AWS account
    • PingIdentity environment with users and groups already setup for Amazon Q Developer access
    • IAM identity center
    • Pro Tier subscription of Amazon Q Developer

    Walkthrough

    In this section, we demonstrate how to create a SAML-based connection between PingIdentity and IAM Identity Center, enabling you to access Amazon Q Developer seamlessly using your PingIdentity credentials.

    Note: You will need to switch between PingIdentity portal and IAM Identity Center in your browser. We recommend opening a new browser tab for each console.

    Step 1: Enable AWS Single Sign-On in PingIdentity

    This step involves enabling AWS Single Sign-On application within PingIdentity.

      1. In the PingIdentity console, Navigate to the Applications Tab > Application Catalog
      2. Browse catalog for AWS Single Sign-On and select + to start the Quick Setup.
    Screenshot of the PingIdentity Application Catalog interface. The search term "aws" is entered in the search bar, displaying three results: Amazon Web Services – AWS, AWS Gov-Cloud, and AWS Single Sign-On. The "AWS Single Sign-On" option is outlined with a red box and includes a plus button to add the application

    Figure 2 – PingIdentity Application Catalog

    Alt Text: Screenshot of the PingIdentity Application Catalog interface. The search term “aws” is entered in the search bar, displaying three results: Amazon Web Services – AWS, AWS Gov-Cloud, and AWS Single Sign-On. The “AWS Single Sign-On” option is outlined with a red box and includes a plus button to add the application

      1. Provide Name, SSO Region and SSO Tenant ID and choose Next
        • Name – Input an appropriate name for the connection
        • SSO Region – Input the appropriate region
        • Tenant ID – Identity Store ID
          You can run the following CLI command to retrieve the value. It’s a 10-digit alphanumeric prefixed by “d-“.
    aws sso-admin list-instances –query ‘Instances[0].IdentityStoreId’Output: “d-XXXXXXXXXX”
      1. Navigate to PingOne Mappings and select Email Address from the drop down.
    Screenshot of the AWS Single Sign-On configuration in PingIdentity. The screen shows Step 2 of the setup process where the SAML attribute SAML_SUBJECT is mapped to the PingOne attribute "Email Address". A red box highlights the mapping section under "PingOne Mappings".

    Figure 3 – AWS Single Sign-On attribute mapping

    Alt Text: Screenshot of the AWS Single Sign-On configuration in PingIdentity. The screen shows Step 2 of the setup process where the SAML attribute SAML_SUBJECT is mapped to the PingOne attribute “Email Address”. A red box highlights the mapping section under “PingOne Mappings”.

      1. Search and select the group that you have created earlier for enabling access to Amazon Q Developer and select + to add the group.
      2. Choose Save
    Screenshot of Step 3 in the AWS Single Sign-On setup process in PingIdentity. The screen shows the group selection interface where the "Amazon Q" group is listed. A plus icon is shown next to the group to add it, and a blue "Save" button is highlighted in the bottom-right corner to confirm the configuration.

    Figure 4 – Select PingIdentity directory Groups for Amazon Q Developer access

    Alt Text: Screenshot of Step 3 in the AWS Single Sign-On setup process in PingIdentity. The screen shows the group selection interface where the “Amazon Q” group is listed. A plus icon is shown next to the group to add it, and a blue “Save” button is highlighted in the bottom-right corner to confirm the configuration.

    Step 2: Connecting PingIdentity with IAM identity Center

    This step involves configuring PingIdentity with the AWS IAM Identity Center sign-on details to complete the authentication setup.

    1. In the PingIdentity console, Navigate to the Applications Tab > Applications and select the application you created earlier in Step 1
    2. Select Enable Advanced Configuration and choose Enable.
    Screenshot of the PingIdentity Applications dashboard showing the AWS Single Sign-On application selected. The overview panel displays key configuration sections including protocol (SAML), mapped attributes, selected policies, and access group (Amazon Q). The option "Enable Advanced Configuration" is highlighted near the bottom of the panel.

    Figure 5 – Enable Advanced configuration for AWS single Sign-On application

    Alt Text: Screenshot of the PingIdentity Applications dashboard showing the AWS Single Sign-On application selected. The overview panel displays key configuration sections including protocol (SAML), mapped attributes, selected policies, and access group (Amazon Q). The option “Enable Advanced Configuration” is highlighted near the bottom of the panel.

    1. Scroll down and select Download Metadata. This will save the Metadata file to your local computer, which you will use later during the configuration process.
    2. In another browser tab login to your AWS IAM Identity Center console and Select Choose your identity source.
    3. Under Identity source, select Change identity source from the Actions drop-down menu.
    Screenshot of the IAM Identity Center settings page, focused on the "Identity source" tab. The page displays details such as identity source, authentication method, AWS access portal URL, issuer URL, and identity store ID. A dropdown menu labeled "Actions" is expanded in the top-right corner, showing options to "Customize AWS access portal URL" and "Change identity source," highlighted with a red box.

    Figure 6 – Change identity source in IAM Identity Center Console

    Alt Text: Screenshot of the IAM Identity Center settings page, focused on the “Identity source” tab. The page displays details such as identity source, authentication method, AWS access portal URL, issuer URL, and identity store ID. A dropdown menu labeled “Actions” is expanded in the top-right corner, showing options to “Customize AWS access portal URL” and “Change identity source,” highlighted with a red box.

    1. On the next page, select External identity provider and choose Next.
    2. Under Service provider metadata copy the IAM Identity Center Assertion Consumer Service (ACS) URL.

      Screenshot of the "Configure external identity provider" step in the AWS IAM Identity Center setup process. The screen displays service provider metadata including the AWS access portal sign-in URL, IAM Identity Center Assertion Consumer Service (ACS) URL (highlighted with a red box), and IAM Identity Center issuer URL. A button labeled "Download metadata file" is shown in the upper right.

      Figure 7 – Copy IAM Identity Center ACS URL

    Alt Text: Screenshot of the “Configure external identity provider” step in the AWS IAM Identity Center setup process. The screen displays service provider metadata including the AWS access portal sign-in URL, IAM Identity Center Assertion Consumer Service (ACS) URL (highlighted with a red box), and IAM Identity Center issuer URL. A button labeled “Download metadata file” is shown in the upper right.

    1. Now go back to the PingIdentity browser tab and Navigate to the Configuration tab and select pencil icon to edit the details.
    2. Paste the ACS URL you copied from the IAM identity center console and choose Save.
    Screenshots showing the configuration and editing of SAML settings for AWS Single Sign-On in PingIdentity. The first image displays the static configuration view, listing the ACS URL, signing key ("PingOne SSO Certificate for Administrators environment"), signing method ("Response"), and signing algorithm. The second image shows the editable configuration screen with the ACS URL input field highlighted in red, alongside dropdowns for selecting the signing key, options for signing method (Assertion, Response, or both), and the RSA_SHA256 signing algorithm. These screens guide users through setting up secure SAML integration with AWS SSO.

    Figure 8 – Configuring AWS Single Sign-On SAML Settings in PingIdentity console

    Alt Text: Two screenshots showing the configuration and editing of SAML settings for AWS Single Sign-On in PingIdentity. The first image displays the static configuration view, listing the ACS URL, signing key (“PingOne SSO Certificate for Administrators environment”), signing method (“Response”), and signing algorithm. The second image shows the editable configuration screen with the ACS URL input field highlighted in red, alongside dropdowns for selecting the signing key, options for signing method (Assertion, Response, or both), and the RSA_SHA256 signing algorithm. These screens guide users through setting up secure SAML integration with AWS SSO.

    Step 3: Configure PingIdentity as external IdP in IAM identity Center

    This step involves setting up PingIdentity as an external IdP in IAM Identity Center to enable federated access.

    1. Navigate back to the previous browser tab where you had IAM Identity Center console open.
    2. Upload the downloaded PingIdentity IdP SAML metadata file from step 3 of previous section and select Next.
    Screenshot of the AWS Identity Center configuration screen where the user uploads the IdP SAML metadata XML file. The metadata file is shown as successfully selected. Below are empty fields for optional manual entry of IdP sign-in URL, IdP issuer URL, and IdP certificate. The "Next" button is highlighted in orange at the bottom right, indicating the next step in the setup process.

    Figure 9 – AWS IAM Identity Center metadata

    Alt Text: Screenshot of the AWS Identity Center configuration screen where the user uploads the IdP SAML metadata XML file. The metadata file is shown as successfully selected. Below are empty fields for optional manual entry of IdP sign-in URL, IdP issuer URL, and IdP certificate. The “Next” button is highlighted in orange at the bottom right, indicating the next step in the setup process.

    1. Review the list of changes. Once you are ready to proceed, type ACCEPT, then select Change identity source.

    Step 4: Enable provisioning and identity-aware sessions in IAM identity Center

    This step involves configuring user provisioning and enabling identity-aware sessions in AWS IAM Identity Center to support dynamic access control.

    1. In IAM Identity Center Console, Choose Settings in the left navigation pane.
    2. On the Settings page, locate and enable automatic provisioning. This immediately enabled automatic provisioning in IAM Identity Center and displays the necessary SCIM endpoint and access token information.
    3. In the Inbound automatic provisioning dialog box, copy each of the values for the following options. You will need to paste these later when you configure provisioning in PingIdentity.
      • SCIM endpoint
      • Access token
    4. Choose Close.
    5. Next enable identity-aware sessions and automatic provisioning.
    Two options are displayed for further configuration: "Enable identity-aware sessions" and "Automatic provisioning." Both options have an "Enable" button on the right-hand side, highlighted in red.

    Figure 10 – IAM Identity Center Settings for identity aware sessions and automatic provisioning

    Alt Text: Two options are displayed for further configuration: “Enable identity-aware sessions” and “Automatic provisioning.” Both options have an “Enable” button on the right-hand side, highlighted in red.

    Step 5: Configure connections provisioning in PingIdentity

    This step involves setting up connection provisioning in PingIdentity to enable automatic user and group management.

    1. In the PingIdentity console, Navigate to the Integrations > Provisioning.
    2. Select plus icon > New Connection
    3. Under connection type Select Identity Store.
    PingIdentity Provisioning configuration screen. The left sidebar highlights the "Provisioning" tab. The main panel shows the "Create a New Connection" dialog with two connection type options: "Identity Store" and "Gateway." The "Identity Store" option is selected using the "Select" button on the right. A plus (+) icon at the top indicates the option to add a new provisioning connection.

    Figure 11 – PingIdentity connection provisioning

    Alt Text: PingIdentity Provisioning configuration screen. The left sidebar highlights the “Provisioning” tab. The main panel shows the “Create a New Connection” dialog with two connection type options: “Identity Store” and “Gateway.” The “Identity Store” option is selected using the “Select” button on the right. A plus (+) icon at the top indicates the option to add a new provisioning connection.

    1. Select SCIM outbound from the list of options and select Next.
    2. Provide a name for the connection and select Next.
    3. Paste the SCIM endpoint URL into the SCIM BASE URL field.
    4. Navigate to Authentication Method and select OAuth 2 Bearer Token.
    5. Paste the Access token into the Oauth Access Token field.
    6. Select Test Connection to validate the connectivity and select Next.
    PingIdentity interface showing the "Configure Authentication" step in the "Create a New Connection" wizard. Key fields include the SCIM Base URL, SCIM Version (2.0), Authentication Method (OAuth 2 Bearer Token), OAuth Access Token (obscured), and resource paths for Users and Groups. The "Test Connection" and "Next" buttons are visible at the bottom.

    Figure 12 – Configure authentication details

    Alt Text: PingIdentity interface showing the “Configure Authentication” step in the “Create a New Connection” wizard. Key fields include the SCIM Base URL, SCIM Version (2.0), Authentication Method (OAuth 2 Bearer Token), OAuth Access Token (obscured), and resource paths for Users and Groups. The “Test Connection” and “Next” buttons are visible at the bottom.

    1. Navigate to User Filter Expression and change to userName Eq “%s”.
    2. Choose Save. By default, the connection is created in a Disabled state.
    Final step in the PingIdentity "Create a New Connection" wizard showing the "Configure Preferences" screen. The highlighted fields include "User Filter Expression" with the value userName Eq "%s", "User Identifier" set to userName, and group membership handling options ("Merge" and "Overwrite" with "Overwrite" selected). A "Save" button is highlighted at the bottom right.

    Figure 13 – Edit UserFilter Expressions for the connection

    Alt Text: Final step in the PingIdentity “Create a New Connection” wizard showing the “Configure Preferences” screen. The highlighted fields include “User Filter Expression” with the value userName Eq “%s”, “User Identifier” set to userName, and group membership handling options (“Merge” and “Overwrite” with “Overwrite” selected). A “Save” button is highlighted at the bottom right.

    1. Select the connection you created and select the toggle switch to enable the connection.
    PingIdentity configuration screen showing the IAM Identity Store integration. The page displays the identity store name, and tabs for "Overview" and "Configuration." A toggle switch in the top-right corner is highlighted, indicating the integration is currently enabled.

    Figure 14 – Enable the connection

    Alt Text: PingIdentity configuration screen showing the IAM Identity Store integration. The page displays the identity store name, and tabs for “Overview” and “Configuration.” A toggle switch in the top-right corner is highlighted, indicating the integration is currently enabled.

    Step 6: Configure rules provisioning in PingIdentity

    This step involves setting up provisioning rules in PingIdentity to define how users and groups are synchronized.

    1. In the PingIdentity console, Navigate to the Integrations > Provisioning.
    2. Select plus icon > New Rule
    3. Provide a Name and Description for the rule.
    4. Choose Create.
    5. Select plus icon to select the Connection you created in the previous step.
    6. Choose Save.
    Alt Text: Screenshots showing the final steps in connecting the IAM Identity Center to the IAM identity store using PingIdentity. The first image shows the IAM Identity Store connection listed under "Available Connections" with a plus (+) icon to initiate the link. The second image shows the selected connection from the PingOne Directory (P1) as the source and IAM identity store (SCIM) as the target, with the option to "Save" the configuration.

    Figure 15 – Add the IAM identity center connection to the rule

    Alt Text: Screenshots showing the final steps in connecting the IAM Identity Center to the IAM identity store using PingIdentity. The first image shows the IAM Identity Store connection listed under “Available Connections” with a plus (+) icon to initiate the link. The second image shows the selected connection from the PingOne Directory (P1) as the source and IAM identity store (SCIM) as the target, with the option to “Save” the configuration.

    1. If you want to sync users from your PingIdentity directory, create a user filter. To do so, navigate to User Filter and select pencil icon to edit the settings.
    2. Choose the appropriate filter from the drop down based on your use case and select Save. I have chosen Group Name which has been designated for Amazon Q Developer access.
    Screenshot of the "Edit User Filter" interface in IAM Identity Center. The user filter is configured to provision users who belong to a group with names that contain "Amazon Q Developer." The condition logic is set to match if "Any" of the conditions are true.

    Figure 16 – PingIdentity user filter

    Alt Text: Screenshot of the “Edit User Filter” interface in IAM Identity Center. The user filter is configured to provision users who belong to a group with names that contain “Amazon Q Developer.” The condition logic is set to match if “Any” of the conditions are true.

    1. If you want to sync a group from your PingIdentity directory, create group provisioning. To do so, navigate to Group Provisioning and select pencil icon to edit the settings.
    2. Select the appropriate group which has been designated for Amazon Q Developer access and choose Save.
    Screenshot of the "Edit Group Provisioning" screen in IAM Identity Center. The group "Amazon Q Developer" is selected for outbound provisioning. A "Save" button is highlighted in the bottom-left corner.

    Figure 17 – PingIdentity Group Provisioning

    Alt Text: Screenshot of the “Edit Group Provisioning” screen in IAM Identity Center. The group “Amazon Q Developer” is selected for outbound provisioning. A “Save” button is highlighted in the bottom-left corner.

    1. Navigate to Attribute Mapping and select the pencil icon to edit the settings.
    2. Delete the PingOne Directory attribute Primary Phone.
    3. Add a new attribute and select Username as PingOne Directory and displayName as IAM identity Store.
    4. Choose Save.
    Two screenshots showing the editing of attribute mappings in IAM Identity Center. The first image displays default mappings such as 'Email Address' to 'workEmail' and 'Username' to 'userName', with an option to delete or update each field. The second image shows the addition of a new attribute mapping from 'Username' to 'displayName', along with highlighted 'Add' and 'Save' buttons.

    Figure 18 – PingIdentity attribute mapping

    Alt Text: Two screenshots showing the editing of attribute mappings in IAM Identity Center. The first image displays default mappings such as ‘Email Address’ to ‘workEmail’ and ‘Username’ to ‘userName’, with an option to delete or update each field. The second image shows the addition of a new attribute mapping from ‘Username’ to ‘displayName’, along with highlighted ‘Add’ and ‘Save’ buttons.

    1. Select the rule you created and select the toggle switch to enable the rule.
    2. This automatically provisions the users/groups from PingIdentity to IAM identity Center using SCIM.
    IAM Identity Center sync summary showing successful user and group provisioning. The first image highlights two users impacted and successfully synced. The second image highlights one group impacted and successfully synced. Sync status is marked 'ACTIVE' in both views, confirming successful integration between PingOne and AWS IAM Identity Center.

    Figure 19 – PingIdentity Users and Groups Sync status using SCIM

    Alt Text: IAM Identity Center sync summary showing successful user and group provisioning. The first image highlights two users impacted and successfully synced. The second image highlights one group impacted and successfully synced. Sync status is marked ‘ACTIVE’ in both views, confirming successful integration between PingOne and AWS IAM Identity Center.

    Step 7: Provide access to Amazon Q Developer

    This step involves locating and subscribing the groups that need permission to use Amazon Q Developer.

    1. In the Amazon Q Developer console, under Subscriptions add the IAM identity center groups which require access to Amazon Q Developer.
    2. Select Subscribe and search for the group name.
    3. Select Assign.
    Screenshot of the Amazon Q Developer Subscriptions page in the AWS Management Console. The "Groups" tab is selected, displaying “Amazon Q Developer,” with a subscription status of “Subscribed.” The “Amazon Q Developer” group is highlighted with a red box.

    Figure 20 – Amazon Q Developer subscriptions page

    Alt Text: Screenshot of the Amazon Q Developer Subscriptions page in the AWS Management Console. The “Groups” tab is selected, displaying “Amazon Q Developer,” with a subscription status of “Subscribed.” The “Amazon Q Developer” group is highlighted with a red box.

    Setup Amazon Q Developer with IAM Identity Center

    This section guides you through installing the Amazon Q Developer extension and setting up authentication with IAM Identity Center.

    1. To set up Amazon Q Developer extension in your integrated development environment (IDE), complete the steps in AWS documentation.
    2. Once extension is installed Choose Amazon Q icon in your IDE.
    3. Choose a sign-in option.
    4. Select Use with Pro license and choose
    5. Continue.
    6. Provide the Start URL. You can retrieve this AWS access portal URL from the IAM Identity Center Console.
    Screenshot of the IAM Identity Center settings page in the AWS Console, displaying the identity source configuration. It shows that the identity source is set to "External identity provider" with SAML 2.0 authentication and SCIM provisioning. The highlighted section includes the AWS access portal URL and the Identity Store ID. The "Settings" tab is selected in the left navigation pane.

    Figure 21 – IAM identity center access portal URL

    Alt Text: Screenshot of the IAM Identity Center settings page in the AWS Console, displaying the identity source configuration. It shows that the identity source is set to “External identity provider” with SAML 2.0 authentication and SCIM provisioning. The highlighted section includes the AWS access portal URL and the Identity Store ID. The “Settings” tab is selected in the left navigation pane.

    1. Provide the region that hosts the identity directory and choose Continue
    2. Select Open on the resulting pop up which redirects to your browser.
    3. The browser redirects you to the Pingone URL where you enter your PingIdentity credentials and select Sign On.
    4. Upon successful authentication, select Allow access on the resulting pop up to login successfully.
    A screen recording of Visual Studio Code where the user selects the Amazon Q icon from the sidebar. The screen transitions to a login prompt indicating that the user must authenticate using their PingIdentity credentials via IAM Identity Center before accessing Amazon Q Developer features. The message highlights that authentication is required to continue.

    Figure 22 – Setup Visual Studio Code Amazon Q Developer extension

    Alt Text: A screen recording of Visual Studio Code where the user selects the Amazon Q icon from the sidebar. The screen transitions to a login prompt indicating that the user must authenticate using their PingIdentity credentials via IAM Identity Center before accessing Amazon Q Developer features. The message highlights that authentication is required to continue.

    Test Configuration

    Upon successfully completing the previous step, you can now leverage the code suggestions by Amazon Q Developer.

    A screen recording of Visual Studio Code where Amazon Q Developer generates a sample code inline.

    Figure 23 – Amazon Q Developer example

    Alt Text: A screen recording of Visual Studio Code where Amazon Q Developer generates a sample code inline.

    Clean Up

    To avoid ongoing charges after testing this solution, follow these steps to remove all provisioned resources:1. Remove PingIdentity Application Configuration

    • In the PingIdentity console, navigate to Applications.
    • Locate and delete the AWS Single Sign-On application that was configured for IAM Identity Center integration.

    2. Reset IAM Identity Center Configuration

    • In the AWS IAM Identity Center console:
      • Navigate to Settings > Identity source.
      • Change the identity source back to the default IAM Identity Center directory if no longer using PingIdentity.
      • Remove any external metadata and configuration uploaded during the setup.

    3. Revoke Subscriptions and Access

    • In the Amazon Q Developer console:
      • Go to Subscriptions and remove assigned groups such as Amazon Q Developer or code whisperer trial.
      • This will deactivate access and prevent any future charges tied to those subscriptions.

    4. Remove Amazon Q Developer Extension

    • If desired, uninstall the Amazon Q Developer extension from Visual Studio Code to fully revert the development environment.

    Conclusion

    In this post, we demonstrated how to use existing PingIdentity credentials to access Amazon Q Developer through integration with IAM Identity Center. We provided a step-by-step guide for configuring PingIdentity as an external identity provider (IdP) with IAM Identity Center. Lastly, we demonstrated how to connect Amazon Q Developer extension within your IDE to AWS using your PingIdentity credentials, allowing seamless access to Amazon Q Developer.If you have any comments or questions, share them in the comments section.

    To learn more about AWS Services

    Amazon Q Developer

    IAM Identity Center

    AWS Toolkit for Visual Studio Code


    About the author

    Sid Vantair is a Solutions Architect with AWS covering Strategic accounts. He thrives on resolving complex technical issues to overcome customer hurdles. Outside of work, he cherishes spending time with his family and fostering inquisitiveness in his children.

    Secure access to a cross-account Amazon MSK cluster from Amazon MSK Connect using IAM authentication

    Post Syndicated from Venkata Sai Mahesh Swargam original https://aws.amazon.com/blogs/big-data/secure-access-to-a-cross-account-amazon-msk-cluster-from-amazon-msk-connect-using-iam-authentication/

    Amazon Managed Streaming for Apache Kafka (MSK) Connect is a fully managed, scalable, and highly available service that enables the streaming of data between Apache Kafka and other data systems. Amazon MSK Connect is built on top of Kafka Connect, an open-source framework that provides a standard way to connect Kafka with external data systems. Kafka Connect supports a variety of connectors, which are used to stream data in and out of Kafka. MSK Connect extends the capabilities of Kafka Connect by providing a managed service with added security features, straightforward configuration, and automatic scaling capabilities, enabling businesses to focus on their data streaming needs without the overhead of managing the underlying infrastructure.

    In some use cases, you might need to use an MSK cluster in one AWS account, but MSK Connect is located in a separate account. In this post, we demonstrate how to create a connector to achieve this use case. At the time of writing, MSK Connect connectors can be created only for MSK clusters that have AWS Identity and Access Management (IAM) role-based authentication or no authentication. We demonstrate how to implement IAM authentication after establishing network connectivity. IAM provides enhanced security measures, making sure your systems are protected against unauthorized access.

    Solution overview

    The connector can be configured for a variety of purposes, such as sinking data to an Amazon Simple Storage Service (Amazon S3) bucket, tracking the source database changes, or serving as a migration tool such as MirrorMaker2 on MSK Connect to transfer data from a source cluster to a target cluster this is located in a different account.

    The following diagram illustrates a use case using Debezium and Amazon S3 source connectors.

    The following diagram illustrates using S3 Sink and migration to a cross-account failover cluster using a MirrorMaker connector deployed on MSK Connect.

    Currently MSK Connect connectors can be created only for MSK clusters which have IAM role-based authentication or no authentication. In this blog, I’ll guide you through the essential steps for implementing the industry-recommended IAM (Identity and Access Management) authentication after establishing network connectivity. IAM provides enhanced security measures, ensuring your systems are protected against unauthorized access.

    The launch of multi-VPC private connectivity (powered by AWS PrivateLink) and cluster policy support for MSK clusters simplifies the connectivity of Kafka clients to brokers. By enabling this feature on the MSK cluster, you can use the cluster-based policy to manage all access control centrally in one place. In this post, we cover the process of enabling this feature on the source MSK cluster.

    We don’t fully utilize the multi-VPC connectivity provided by this new feature because that requires you to use different bootstrap URLs with port numbers (14001:3) that are not supported by MSK Connect as of writing of this post. We explore a secure network connectivity solution that uses private connectivity patterns, as detailed in How Goldman Sachs builds cross-account connectivity to their Amazon MSK clusters with AWS PrivateLink.

    Connecting to a cross-account MSK cluster from MSK Connect involves the following steps.

    Steps to configure the MSK cluster in Account A:

    1. Enable the multi-VPC private connectivity(Private Link) feature for IAM authentication scheme that is enabled for your MSK cluster.
    2. Configure the cluster policy to allow a cross-account connector.
    3. Implement one of the preceding network connectivity patterns according to your use case to establish the connectivity with the Account B VPC and make network changes accordingly.

    Steps to configure the MSK connector in Account B:

    1. Create an MSK connector in private subnets using the AWS Command Line Interface (AWS CLI).
    2. Verify the network connectivity from Account A and make network changes accordingly.
    3. Check the destination service to verify the incoming data.

    Prerequisites

    To follow along with this post, you should have an MSK cluster in one AWS account and MSK Connect in a separate account.

    Set up the MSK cluster setup in Account A:

    In this post, we only show the important steps that are required to enable the multi-VPC feature on an MSK cluster:

    1. Create a provisioned MSK cluster in Account A’s VPC with the following considerations, which are required for the multi-VPC feature:
      • Cluster version must be 2.7.1 or higher.
      • Instance type must be m5.large or higher.
      • Authentication should be IAM (you must not enable unauthenticated access for this cluster).
    2. After you create the cluster, go to the Networking settings section of your cluster and choose Edit. Then choose Turn on multi-VPC connectivity.

    1. Select IAM role-based authentication and choose Turn on selection.

    It might take around 30 minutes to enable. This step is required to enable the cluster policy feature that allows the cross-account connector to access the MSK cluster.

    1. After it has been enabled, scroll down to Security settings and choose Edit cluster policy.
    2. Define your cluster policy and choose Save changes.

    1. The new cluster policy allows for defining a Basic or Advanced cluster policy. With the Basic option, it only allows CreateVPCConnection, GetBootstrapBrokers, DescribeCluster, and DescribeClusterV2 actions that are required for creating the cross-VPC connectivity to your cluster. However, we have to use Advanced to allow more actions that are required by the MSK Connector. The policy should be as follows:
      {
      
          "Version": "2012-10-17",
          "Statement": [{
              "Effect": "Allow",
              "Principal": {
                  "AWS": "Connector-AccountId"
              },
              "Action": [
                  "kafka:CreateVpcConnection",
                  "kafka:GetBootstrapBrokers",
                  "kafka:DescribeCluster",
                  "kafka:DescribeClusterV2",
                  "kafka-cluster:Connect",
                  "kafka-cluster:DescribeCluster",
                  "kafka-cluster:ReadData",
                  "kafka-cluster:DescribeTopic",
                  "kafka-cluster:WriteData",
                  "kafka-cluster:CreateTopic",
                  "kafka-cluster:AlterGroup",
                  "kafka-cluster:DescribeGroup"
              ],
      "Resource": [
                      "arn:aws:kafka:<region>:<Cluster-AccountId>:cluster/<cluster-name>/<uuid>",
                      "arn:aws:kafka:<region>:<Cluster-AccountId>:topic/<cluster-name>/<uuid>/<specific-topic-name>",
                      "arn:aws:kafka:<region>:<Cluster-AccountId>:group/<cluster-name>/<uuid>/<specific-group-name>"
                  ]
          }]
      }

    You might need to modify the preceding permissions to limit access to your resources (topics, groups). Also, you can restrict access to a specific connector by giving the connector IAM role, or you can mention the account number to allow the connectors in that account.

    Now the cluster is ready. However, you need to make sure of the network connectivity between the cross-account connector VPC and the MSK cluster VPC.

    If you’re using VPC peering or Transit Gateway while connecting to MSK Connect either from cross-account or the same account, do not configure your connector to reach the peered VPC resources with IPs in the following CIDR ranges (for more details, see Connecting from connectors):

    • 10.99.0.0/16
    • 192.168.0.0/16
    • 172.21.0.0/16

    In the MSK cluster security group, make sure you allowed port 9098 from Account B network resources and make changes in the subnets according to your network connectivity pattern.

    Set up the MSK connector in Account B:

    In this section, we demonstrate how to use the S3 Sink connector. However, you can use a different connector according to your use case and make the changes accordingly.

    1. Create an S3 bucket (or use an existing bucket).
    2. Make sure that the VPC that you’re using in this account has a security group and private subnets. If your connector for MSK Connect needs access to the internet, refer to Enable internet access for Amazon MSK Connect.
    3. Verify the network connectivity between Account A and Account B by using the telnet command to the broker endpoints with port 9098.
    4. Create an S3 VPC endpoint.
    5. Create a connector plugin according to your connector plugin provider (confluent or lenses). Make a note of the custom plugin Amazon Resource Name (ARN) to use in a later step.
    6. Create an IAM role for your connector to allow access to your S3 bucket and the MSK cluster.
      • The IAM role’s trust relationship should be as follows:
        {
            "Version": "2012-10-17",
            "Statement": [
                {
                    "Effect": "Allow",
                    "Principal": {
                        "Service": "kafkaconnect.amazonaws.com"
                    },
                    "Action": "sts:AssumeRole"
                }
            ]
        }

      • Add the following S3 access policy to your IAM role:
        {
            "Version": "2012-10-17",
            "Statement": [{
                "Effect": "Allow",
                "Action": [
                    "s3:ListAllMyBuckets",
                    "s3:ListBucket",
                    "s3:GetBucketLocation",
                    "s3:DeleteObject",
                    "s3:PutObject",
                    "s3:GetObject",
                    "s3:AbortMultipartUpload",
                    "s3:ListMultipartUploadParts",
                    "s3:ListBucketMultipartUploads"
                ],
                "Resource": [
                                "arn:aws:s3:::<destination-bucket>",
                             "arn:aws:s3:::<destination-bucket>/*"
                ],
                   "Condition": {
                "StringEquals": {
                       "aws:SourceVpc": "vpc-xxxx"
                       }
                       }
            }]
        }

      • The following policy contains the required actions by the connector:
        {
        "Version": "2012-10-17",
        "Statement": [
           {
                "Effect": "Allow",
                "Action": [
                    "kafka-cluster:Connect",
                    "kafka-cluster:DescribeCluster",
                    "kafka-cluster:ReadData",
                    "kafka-cluster:DescribeTopic",
                    "kafka-cluster:WriteData",
                    "kafka-cluster:CreateTopic",
                    "kafka-cluster:AlterGroup",
                    "kafka-cluster:DescribeGroup"
                ],
                "Resource": [
                    "arn:aws:kafka:<region>:<Cluster-AccountId>:cluster/<cluster-name>/<uuid>",
                    "arn:aws:kafka:<region>:<Cluster-AccountId>:topic/<cluster-name>/<uuid>/<specific-topic-name>",
                    "arn:aws:kafka:<region>:<Cluster-AccountId>:group/<cluster-name>/<uuid>/<specific-group-name>"
                ]
            }
        ]
        }

    You might need to modify the preceding permissions to limit access to your resources (topics, groups)

    Finally, it’s time to create the MSK connector. Because the Amazon MSK console doesn’t allow viewing MSK clusters in other accounts, we show you how to use the AWS CLI instead. We also use basic Amazon S3 configuration for testing purposes. You might need to modify the configuration according to your connector’s use case.

    1. Create a connector using the AWS CLI with the following command with the required parameters of the connector, along with Account A’s MSK cluster broker endpoints:
      aws kafkaconnect create-connector \
      --capacity "autoScaling={maxWorkerCount=2,mcuCount=1,minWorkerCount=1,scaleInPolicy={cpuUtilizationPercentage=10},scaleOutPolicy={cpuUtilizationPercentage=80}}" \
      --connector-configuration \
      "connector.class=io.confluent.connect.s3.S3SinkConnector, \
      s3.region=<region>, \
      schema.compatibility=NONE, \
      flush.size=2, \
      tasks.max=1, \
      topics=<MSK-Cluster-topic>, \
      security.protocol=SASL_SSL, \
      s3.compression.type=gzip, \
      format.class=io.confluent.connect.s3.format.json.JsonFormat, \
      sasl.mechanism=AWS_MSK_IAM, \
      sasl.jaas.config=software.amazon.msk.auth.iam.IAMLoginModule required, \
      sasl.client.callback.handler.class=software.amazon.msk.auth.iam.IAMClientCallbackHandler, \
      value.converter=org.apache.kafka.connect.storage.StringConverter, \
      storage.class=io.confluent.connect.s3.storage.S3Storage, \
      s3.bucket.name=<s3-bucket-name>, \
      timestamp.extractor=Record, \
      key.converter=org.apache.kafka.connect.storage.StringConverter" \
      --connector-name "Connector-name" \
      --kafka-cluster '{"apacheKafkaCluster": {"bootstrapServers": "<broker-strings>:9098","vpc": {"securityGroups": ["sg-0b36a015789f859a3"],"subnets": ["subnet-07950da1ebb8be6d8","subnet-026a729668f3f9728"]}}}' \
      --kafka-cluster-client-authentication "authenticationType=IAM" \
      --kafka-cluster-encryption-in-transit "encryptionType=TLS" \
      --kafka-connect-version "2.7.1" \
      --log-delivery workerLogDelivery='{cloudWatchLogs={enabled=true,logGroup="<MSKConnect-log-group-name>"}}' \
      --plugins "customPlugin={customPluginArn=<Custom-Plugin-ARN>,revision=1}" \
      --service-execution-role-arn "<IAM-role-ARN>"

    2. After you create the connector, connect the producer to your topic and insert data into it. In the following code, we use a Kafka client to insert data for testing purposes:
      bin/kafka-console-producer.sh --broker-list <broker-string> --producer.config client.properties --topic <topic-name>

    If everything is set up correctly, you should see the data in your destination S3 bucket. If not, check the troubleshooting tips in the following section.

    Troubleshooting tips

    After deploying the connector, if it’s in the CREATING state on the connector details page, access the Amazon CloudWatch log group specified in your connector creation request. Review the logs for any errors. If no errors are found, wait for the connector to complete its creation process.

    Additionally, make sure the IAM roles have their required permissions, and check the security groups and NACLs for proper connectivity between VPCs.

    Clean up

    When you’re done testing this solution, clean up any unwanted resources to avoid ongoing charges

    Conclusion

    In this post, we demonstrated how to create an MSK connector when you need to use an MSK cluster in one AWS account, but MSK Connect is located in a separate account. This architecture includes an S3 Sink connector for demonstration purposes, but it can accommodate other types of sink and source connectors. Additionally, this architecture focuses solely on IAM authenticated connectors. If an unauthenticated connector is desired, the multi-VPC connectivity (PrivateLink) and cluster policy components can be ignored. The remaining process, which involves creating a network connection between the account VPCs, remains the same.

    Try out the solution for yourself, and let us know your questions and feedback in the comments section.

    Check out more AWS Partners or contact an AWS Representative to learn how we can help accelerate your business.


    About the Author

    Venkata Sai Mahesh Swargam is a Cloud Engineer at AWS in Hyderabad. He specializes in Amazon MSK and Amazon Kinesis services. Mahesh is dedicated to helping customers by providing technical guidance and solving issues related to their Amazon MSK architectures. In his free time, he enjoys being with family and traveling around the world.

    AWS Backup adds new Multi-party approval for logically air-gapped vaults

    Post Syndicated from Veliswa Boya original https://aws.amazon.com/blogs/aws/aws-backup-adds-new-multi-party-approval-for-logically-air-gapped-vaults/

    Today, we’re announcing the general availability of a new capability that integrates AWS Backup logically air-gapped vaults with Multi-party approval to provide access to your backups even when your AWS account is inaccessible due to inadvertent or malicious events. AWS Backup is a fully managed service that centralizes and automates data protection across AWS services and hybrid workloads. It provides core data protection features, ransomware recovery capabilities, and compliance insights and analytics for data protection policies and operations.

    As a backup administrator, you use AWS Backup logically air-gapped vaults to securely share backups across accounts and organizations, logically isolate your backup storage, and support direct restore to help reduce recovery time following an inadvertent or malicious event. However, if a bad or unintended actor gains root access to your backup account or the management account of your organization, your backups suddenly become inaccessible, even though they’re still safely stored in the logically air-gapped vault. While traditional account recovery involved working through support channels, AWS Backup with Multi-party approval delivers immediate access to recovery tools, empowering you with faster resolution times and greater control over your recovery timeline.

    Multi-party approval for AWS Backup logically air-gapped vaults adds an additional layer of protection for you to recover your application data even when your AWS account becomes completely inaccessible. Using Multi-party approval, you can create approval teams which consist of highly trusted individuals in your organization, then associate them with your logically air-gapped vault. If you get locked out of your AWS accounts due to inadvertent or malicious actions, you can request your own approval team to authorize sharing of your vault from any account, even those outside your AWS Organizations account. Once approved, you gain authorized access to your backups and can begin your recovery process.

    How it works
    Multi-party approval for AWS Backup logically air-gapped vaults combines the security of logically air-gapped vaults with the governance of Multi-party approval to create a recovery mechanism that works even when your AWS account is compromised. Here’s how it works:

    1. Approval team creation
    First, you create an approval team in your AWS Organizations management account. If the management account is new, first create an AWS Identity and Access Management (IAM) Identity Center instance before creating the approval team. The approval team consists of trusted individuals (IAM Identity Center users) who will be authorized to approve vault sharing requests. Each approver receives an invitation to join the approval team through a new Approval portal.

    2. Vault association
    When your approval team is active, you share it with accounts that own logically air-gapped vaults using AWS Resource Access Manager (AWS RAM) to safeguard against requests for approval from arbitrary accounts. Backup administrators can then associate this approval team with new or existing logically air-gapped vaults.

    3. Protection against compromise
    If your AWS account becomes compromised or inaccessible, you can request access to your backups from a different account (a clean recovery account). This request includes the Amazon Resource Name (ARN) of the logically air-gapped vault in the format arn:aws:backup:<region>:<account>:backup-vault:<name> and an optional vault name and comment.

    4. Multi-party approval
    The request is sent to the approval team, who review it through the approval portal. When the minimum required number of approvers authorize the request, the vault is automatically shared with the requesting account. All requests and approvals are comprehensively logged in AWS CloudTrail.

    5. Recovery process
    With access granted, you can immediately start restoring or copying your data in the new recovery account without waiting for your compromised account to be remediated.

    This approach provides an entirely separate authentication path to access and recover your backups, completely independent of your AWS account credentials. Even if the bad actor has root access to your account, they can’t prevent the approval team-based recovery process.

    1. Create a new logically air-gapped vault
    To create a new logically air-gapped vault, provide a name, tags (optional), and vault lock properties.

    2. Assign an approval team
    When the vault has been created, choose Assign approval team to assign it with an existing approval team.

    Choose an existing approval team from the drop-down menu then select Submit to finalize the assignment.

    Now your approval team is assigned to your logically air-gapped vault.

    Good to know
    It’s essential to test your recovery process before an actual emergency:

    1. From a different AWS account, use the AWS Backup console or API to request sharing of your logically air-gapped vault by providing the vault ID and ARN.
    2. Request approval of your request from the approval team.
    3. Once approved, verify that you can access and restore backups from the vault in your testing account.

    As a best practice, monitor the health of your approval team regularly using AWS Backup Audit Manager to ensure they have sufficient active participants to meet your approval threshold.

    Multi-party approval for enhanced cloud governance
    Today, we’re also announcing the general availability of a new capability that AWS account administrators can use to add Multi-party approval to their product offerings. As highlighted in this post, AWS Backup is the first service to integrate this capability. With Multi-party approval, administrators can enable application owners to guard sensitive service operations with a distributed review process.

    Good to know
    Multi-party approval provides several significant security advantages:

    • Distributed decision-making, eliminating single points of failure
    • Full auditability through AWS CloudTrail integration
    • Protection against compromised credentials
    • Formal governance for compliance-sensitive operations
    • Consistent approval experience across integrated services

    Now available

    Multi-party approval is available today in all AWS Regions where AWS Organizations is available. Multi-party approval for AWS Backup logically air-gapped vaults is available in all AWS Regions where AWS Backup is available.

    Veliswa.

    Implementing just-in-time privileged access to AWS with Microsoft Entra and AWS IAM Identity Center

    Post Syndicated from Rodney Underkoffler original https://aws.amazon.com/blogs/security/implementing-just-in-time-privileged-access-to-aws-with-microsoft-entra-and-aws-iam-identity-center/

    Controlling access to your privileged and sensitive resources is critical for all AWS customers. Preventing direct human interaction with services and systems through automation is the primary means of accomplishing this. For those infrequent times when automation is not yet possible or implemented, providing a secure method for temporary elevated access is the next best option. In a privileged access management solution, there are several elements that should be included:

    • User access should follow the principle of least privileged
    • Users should be granted only the minimum amount of access required to perform their job duties
    • Access granted should persist only for the time necessary to perform the assigned tasks
    • The solution should include:
      • An eligibility process for granting access
      • An approval process for granting access
      • Auditing of the access grants and activities taken

    Entra Privileged Identity Management (PIM) is a third-party solution that provides dynamic group management, access control, and audit capabilities that integrate with AWS IAM Identity Center.

    In this post, we show you how to configure just-in-time access to AWS using Entra PIM’s integration with IAM Identity Center.

    Just-in-time privileged access with Entra PIM and IAM Identity Center

    Privileged Identity Management is a Microsoft Entra ID feature that enables management, control, and access monitoring of your important cloud resources. There are many different configuration options when it comes to eligibility and assignment to privileged security groups, including time-bound access with start and end dates, multi-factor authentication (MFA) enforcement, justification tracking, and so on. You can read more about those options in Microsoft’s product documentation.

    Figure 1 shows the just-in-time access solution powered by Entra PIM group activation requests. In this solution, Entra PIM is integrated with IAM Identity Center to provide temporary, limited access to AWS resources based on user requests and approvals. Entra ID users can submit requests for specific access to specific AWS permissions sets, which are then automatically granted for a set duration.

    Figure 1 – Entra PIM solution integrated with IAM Identity Center

    Figure 1 – Entra PIM solution integrated with IAM Identity Center

    Prerequisites

    To try the solution described in this post, you need to have the following in place:

    Step-by-step configuration

    In the following steps, you create configurations to enable Entra PIM for Groups to automatically assign users to groups based on approval criteria. The groups will be Entra ID security groups that use direct assignment. Note that, at the time of this writing, dynamic groups and groups that you have synchronized from a self-managed Active Directory cannot be used with Microsoft Entra PIM. While it might be possible to also populate these groups using a third-party synchronization tool, for the purposes of this exercise, we assume that administration is occurring solely within Entra ID.

    In the example scenario, the role corresponds to a specific job function within your organization. We use a group called AWS – Amazon EC2 Admin, which corresponds to a DevOps on-call site reliability engineer (SRE) lead.

    Step 1: Create a group representing a specific privilege level.

    Create a group in Entra ID that represents a specific privilege level that your employees can request for access to the AWS Management Console.

    1. Sign in to the Microsoft Entra admin center with your credentials.
    2. Select Groups and then All groups.
    3. Choose New group.
    4. Specify Security in the Group type dropdown list.
      • In the Group name field, enter AWS - Amazon EC2 Admin.
      • In the Group description field, enter Amazon EC2 administrator permissions.
      • Choose Create.

    Step 2: Assign access for the group in Entra ID

    Now you need to assign the newly created group to your enterprise application.

    1. Sign in to the Microsoft Entra admin center with your credentials
    2. Select Applications and then Enterprise applications and select the IAM Identity Center application that you created.
    3. Select Users and groups from the Manage menu group and select + Add user/group.
    4. Select the None selected option from the Users and groups section.
    5. Select the AWS – Amazon EC2 Admin group checkbox.
    6. Choose Select and then choose Assign.
    7. Select Provisioning from the Manage menu group and begin synchronizing the empty group by selecting the Start provisioning option.

    When you first enable provisioning, the initial Microsoft Entra ID sync is triggered immediately. After that, subsequent syncs are triggered every 40 minutes, with the exact frequency depending on the number of users and groups in the application.

    When the initial sync completes, the AWS – Amazon EC2 Admin group will be ready for configuration in IAM Identity Center.

    Step 3: Create permission sets in IAM Identity Center

    As you prepare to configure your permission set, let’s consider session duration from both the AWS and Entra PIM perspectives. There are two session durations on the AWS side: AWS access portal session duration and permission set session duration. The AWS access portal session duration defines the maximum length of time that a user can be signed in to the AWS access portal without reauthenticating. The default session duration is 8 hours but can be configured anywhere between 15 minutes and 7 days.

    Note: Entra does not pass the SessionNotOnOrAfter attribute to IAM Identity Center as part of the SAML assertion. Meaning the duration of the AWS access portal session is controlled by the duration set in IAM Identity Center.

    The session duration defined within a permission set specifies the length of time that a user can have a session for an AWS account. The default and minimum value is 1 hour (with a maximum value of 12). Entra PIM allows you to configure an activation maximum duration. The activation maximum duration is the length of time that the specified group will contain the activated user account. The activation maximum duration has a default value of 8 hours but can be configured between 30 minutes and 24 hours.

    You should carefully consider the values that you provide for each of these durations. The AWS access portal will display permission sets that the user had access to at the time that they signed in for the duration of the active AWS access portal session.

    When you set the permission set session duration, you need to keep in mind that active sessions are not terminated when the Entra PIM activation maximum duration has been reached. Let’s look at an example:

    • AWS access portal session duration: default (8 hours)
    • Session duration defined in the permission set: 1 hour
    • Entra PIM group activation maximum duration: 1 hour

    You might be inclined to think that an hour after being added to the group in Entra, the user would no longer have access to AWS resources. This is not necessarily the case. A user could authenticate to the AWS access portal, wait up to 8 hours, and still successfully access AWS through the permission set link. Their session would be active for the duration of the session setting defined in the permission set, which is 1 hour in this case. In this example, we have a potential window of access of 10 hours, as shown in Figure 2 that follows.

    Figure 2 – Calculating session duration

    Figure 2 – Calculating session duration

    With this in mind, configure your test environment with the default setting of 8 hours for the AWS access portal and 1 hour for the permission set session duration value.

    1. Open the IAM Identity Center console.
    2. Under Multi-account permissions, choose Permission sets.
    3. Choose Create permission set.
    4. On the Select permission set type page, under Permission set type, select Custom permission set, and then choose Next.
    5. On the Specify policies and permissions boundary page, expand AWS managed policies.
    6. Search for and select AmazonEC2FullAccess policy, and then choose Next.
    7. On the Specify permission set details page, enter EC2AdminAccess for the Permission set name and choose Next.
    8. On the Review and create page, review the selections, and choose Create.

    Step 4: Assign group access in your organization

    At this point, you’re ready to assign the Microsoft Entra group to the corresponding permission set in IAM Identity Center. This allows users who are members of the group to be granted the appropriate access level in AWS.

    1. In the navigation pane, under Multi-account permissions, choose AWS accounts.
    2. On the AWS accounts page, select the check box next to one or more AWS accounts to which you want to assign access.
    3. Choose Assign users or groups.
    4. On the Groups tab, select AWS – Amazon EC2 Admin and choose Next
    5. On the Assign permission sets to “<AWS-account-name>” page, select the EC2AdminAccess permission set.
    6. Check that the correct permission set was selected and choose Next.
    7. On the Review and submit page, verify that the correct group and permission set are selected, and choose Submit.

    Step 5: Configure Entra PIM

    To use this Microsoft Entra group with Entra PIM, you bring the group under the management of PIM by using the Entra admin console to activate the group. You can read more about group management with PIM in the Microsoft documentation. Begin by activating the Entra group that you created.

    1. Sign in to the Microsoft Entra admin center with your credentials.
    2. Select Groups and then All groups
    3. Select the AWS – Amazon EC2 Admin group.
      Figure 3 – Selecting groups for PIM enablement

      Figure 3 – Selecting groups for PIM enablement

    4. Select Privileged Identity Management under the Activity menu list.
    5. Choose Enable PIM for this group.
      Figure 4 – Enable PIM for this group

      Figure 4 – Enable PIM for this group

    Now, you will configure the PIM settings for the group. These settings define Member or Owner properties and requirements. It’s here that you can establish MFA requirements, configure notifications, conditional access, approvals, durations, and so on. The Owner role can elevate their permissions using just-in-time access to manage a group, while the Member role is limited to requesting just-in-time membership within the group. In this example, you use the Member properties to demonstrate group membership level temporary elevated access and set a 1-hour duration for the group assignment.

    1. Sign in to the Microsoft Entra admin center with your credentials.
    2. Select Identity Governance, Privileged Identity Management, and then Groups.
    3. Select the AWS – Amazon EC2 Admin group.
      Figure 5 – Selecting groups for PIM configuration

      Figure 5 – Selecting groups for PIM configuration

    4. From the Manage menu select Settings.
    5. Choose Member to view the default role setting details.
      Figure 6 – Settings option for the Member role

      Figure 6 – Settings option for the Member role

    6. Review the default settings. The activation maximum duration should be set to 1 hour and require a justification from the user.
    7. Close the Role setting details – Member blade.
      Figure 7 – Closing the Role setting details – Member blade

      Figure 7 – Closing the Role setting details – Member blade

    8. From the Manage menu select Assignments and choose + Add assignments.
      Figure 8 – Adding eligibility assignments to the PIM enabled groups

      Figure 8 – Adding eligibility assignments to the PIM enabled groups

    9. Select Member from the Select role dropdown menu and choose No member selected. Select the test account, Rich Roe in this example, and then choose Select.
      Figure 9 – Adding the test user as an eligible identity for PIM activation to the group

      Figure 9 – Adding the test user as an eligible identity for PIM activation to the group

    10. Choose Next and leave the default setting of 1 year of eligibility. Duration eligibility defines the period that the user can request activation for the group. Depending on your use case, you will define this as permanent or for a set period. For testing purposes, keep the default setting. Choose Assign.
      Figure 10 – Completing the eligibility assignment

      Figure 10 – Completing the eligibility assignment

    Test the configuration

    You should now have a test configuration of Entra PIM and IAM Identity Center. Use the test account to verify just-in-time access.

    1. Sign in to the Microsoft Entra admin center using the test account (Rich Roe in this example).
    2. Select Identity Governance, Privileged Identity Management, and then My roles.
      Figure 11 – Browsing to the My Roles section of the Entra admin center

      Figure 11 – Browsing to the My Roles section of the Entra admin center

    3. From the Activate menu list, select Groups. Your eligible group assignments should be listed.
    4. Choose Activate for the AWS – Amazon EC2 Admin group.
      Figure 12 – Activating the just-in-time group membership

      Figure 12 – Activating the just-in-time group membership

    5. In the Activate – Member blade, enter a justification for the access request and choose Activate.
      Figure 13 – Providing a justification for access

      Figure 13 – Providing a justification for access

    In this example, there are no approval workflow processes configured for the group, so Entra validates the eligibility requirements and adds the test account to the AWS – Amazon EC2 Admin group. If you want to dive deeper into the approval workflow process, you can read more about it on the Configure PIM for Groups settings page. Because the group is assigned to the enterprise application and configured for provisioning, the updated group membership is automatically synchronized using the SCIM protocol with the connected IAM Identity Center instance. The provisioning time can vary based on the number of PIM enabled users that are activating their memberships within a given 10-second period. In most situations, group memberships are synchronized within 2–10 minutes, but can revert to the standard 40-minute interval if activity runs up against Entra PIM throttling limits. IAM Identity Center responds to SCIM requests as they arrive from Entra ID.

    To test access with the newly activated group assignment, use a separate browser or a private window.

    1. Sign in to the My Apps portal with the test user credentials and select the IAM Identity Center app that you created for testing. If you experience an error or don’t see the expected permission set, wait a few minutes until the group membership has synchronized to IAM Identity Center and try again.
      Figure 14 – Accessing IAM Identity Center through the My apps portal

      Figure 14 – Accessing IAM Identity Center through the My apps portal

    2. Expand the associated AWS account and confirm the EC2ReadOnly permission set has been granted.
    3. Close the AWS tab. Wait for the access to be revoked, which has been set to 60 minutes in this example.
      Figure 15 – Just-in-time access to the EC2AdminAccess permission set

      Figure 15 – Just-in-time access to the EC2AdminAccess permission set

    4. Sign back in to the My Apps portal and select the AWS IAM Identity Center app. Notice that the EC2ReadOnly permission set has been revoked.

    Conclusion

    The combination of AWS IAM Identity Center and Entra PIM provides a robust solution for managing just-in-time elevated access to AWS. By using security groups in Entra and mapping them to permission sets in IAM Identity Center, you can automate the provisioning and deprovisioning of privileged access based on defined policies and approval workflows. This approach helps to make sure the principle of least privilege is enforced, with access granted only for the duration required to complete a task. The detailed auditing capabilities of both services also provide comprehensive visibility into privileged access activities.

    For AWS customers seeking a comprehensive, secure, and scalable privileged access management solution, the Entra PIM and IAM Identity Center integration is a common option that’s worth investigating to see if it’s a good fit for your use case.

    If you have feedback about this post, submit comments in the Comments section below. If you have questions about this post, contact AWS Support.

    Rodney Underkoffler

    Rodney Underkoffler

    Rodney is a Senior Solutions Architect at Amazon Web Services, focused on guiding enterprise customers on their cloud journey. He has a background in infrastructure, security, and IT business practices. He is passionate about technology and enjoys building and exploring new solutions and methodologies.

    Aidan Keane

    Aidan Keane

    Aidan is a Senior Specialist Solutions Architect at Amazon Web Services, focused on Microsoft Workloads. He partners with enterprise customers to optimize their Microsoft environments on AWS and accelerate their cloud journey. Outside of work, he is a sports enthusiast who enjoys golf, biking, and watching Liverpool FC, while also enjoying family time and travelling to Ireland and South America.