In at present’s data-driven world, securely accessing, visualizing, and analyzing information is crucial for making knowledgeable enterprise selections. Tens of 1000’s of consumers use Amazon Redshift for contemporary information analytics at scale, delivering as much as 3 times higher price-performance and 7 occasions higher throughput than different cloud information warehouses.
The Amazon Redshift Knowledge API simplifies entry to your Amazon Redshift information warehouse by eradicating the necessity to handle database drivers, connections, community configurations, information buffering, and extra.
With the newly launched function of Amazon Redshift Knowledge API assist for single sign-on and trusted id propagation, you’ll be able to construct information visualization functions that combine single sign-on (SSO) and role-based entry management (RBAC), simplifying consumer administration whereas imposing applicable entry to delicate info.
As an example, a world sports activities gear firm promoting merchandise throughout a number of areas wants to visualise its gross sales information, which incorporates country-level particulars. To keep up the precise degree of entry, the corporate desires to limit information visibility primarily based on the consumer’s function and area. Regional gross sales managers ought to solely see gross sales information for his or her particular area, reminiscent of North America or Europe. Conversely, the worldwide gross sales executives require full entry to your entire dataset, protecting all international locations.
On this put up, we dive into the newly launched function of Amazon Redshift Knowledge API assist for SSO, Amazon Redshift RBAC for row-level safety (RLS) and column-level safety (CLS), and trusted id propagation with AWS IAM Identification Middle to let company identities connect with AWS companies securely. We reveal learn how to combine these companies to create a knowledge visualization software utilizing Streamlit, offering safe, role-based entry that simplifies consumer administration whereas ensuring that your group could make data-driven selections with enhanced safety and ease.
Answer overview
We use a number of AWS companies and open supply instruments to construct a easy information visualization software with SSO to entry information in Amazon Redshift with RBAC. The important thing parts that energy the answer are as follows:
- IAM Identification Middle and trusted id propagation – IAM Identification Middle can simplify consumer administration by enabling SSO throughout AWS companies. This permits customers to authenticate with their company credentials managed of their company id supplier (IdP) like Okta, offering seamless entry to the applying. We discover how trusted id propagation allows managing application-level entry management at scale and exercise logging throughout AWS companies, like Amazon Redshift, by propagating and sustaining id context all through the workflow.
- Exterior IdP – We use Okta as an exterior IdP to handle consumer authentication. Okta connects to IAM Identification Middle, permitting customers to authenticate from exterior techniques whereas sustaining centralized id administration inside AWS. This makes positive that consumer entry and roles are persistently maintained throughout each AWS companies and exterior instruments.
- Amazon Redshift Serverless workgroup, Amazon Redshift Knowledge API, and Amazon Redshift RBAC – Amazon Redshift is a totally managed information warehouse service that permits for quick querying and evaluation of enormous datasets. On this resolution, we use the Redshift Knowledge API, which affords a easy and safe HTTP-based connection to Amazon Redshift, eliminating the necessity for JDBC or ODBC driver-based connections. The Redshift Knowledge API is the beneficial methodology to attach with Amazon Redshift for internet functions. We additionally use RBAC in Amazon Redshift to reveal entry restrictions on gross sales information primarily based on the area column, ensuring that regional gross sales managers solely see information for his or her assigned areas, whereas world gross sales managers have full entry.
- Streamlit software – Streamlit is a broadly used open supply instrument that allows the creation of interactive information functions with minimal code. On this resolution, we use Streamlit to construct a user-friendly interface the place gross sales managers can view and analyze gross sales information in a visible, accessible format. The appliance will combine with Amazon Redshift, offering customers with entry to the information primarily based on their roles and permissions.
The next diagram illustrates the answer structure for SSO with the Redshift Knowledge API utilizing IAM Identification Middle.

The consumer workflow for the information visualization software consists of the next steps:
- The consumer (whether or not a regional gross sales supervisor or world gross sales supervisor) accesses the Streamlit software, which is built-in with SSO to supply a seamless authentication expertise.
- The appliance redirects the consumer to authenticate by way of Okta, the exterior IdP. Okta verifies the consumer’s credentials and returns an ID token to the applying.
- The appliance makes use of the token issued by Okta to imagine a task and short-term AWS Identification and Entry Administration (IAM) session credentials to name the IAM Identification Middle
AssumeRoleWithWebIdentityAPI and IAMAssumeRoleAPI in later steps. - The appliance exchanges the Okta ID token for a token issued by IAM Identification Middle by calling the IAM Identification Middle
CreateTokenWithIAMAPI utilizing the short-term IAM credentials from the earlier step. This token makes positive that the consumer is authenticated with AWS companies and is tied to the IAM Identification Middle consumer profile. - The appliance requests an identity-enhanced IAM function session utilizing the IAM Identification Middle token by calling the
AssumeRole - The appliance makes use of the identity-enhanced IAM function session credentials to securely question Amazon Redshift for gross sales information. The credentials guarantee that solely licensed customers can work together with the Redshift information.
- Because the question is processed, Amazon Redshift checks the id context supplied by IAM Identification Middle. It verifies the consumer’s function and group membership, reminiscent of being part of the North American area or the worldwide gross sales supervisor group.
- Based mostly on the consumer’s id and group membership, and utilizing Amazon Redshift RBAC and row-level safety, Amazon Redshift makes an authorization choice. The teams for the illustration could be broadly categorized into the next classes:
- Regional gross sales managers will likely be granted entry to view gross sales information just for the particular nation or area they handle. As an example, the AMER North American Gross sales Supervisor will solely see gross sales information associated to North America. Equally, the entry management primarily based on EMEA and APAC areas will present row-level safety for the respective areas.
- The worldwide gross sales managers will likely be granted full entry to all areas, enabling them to view your entire world dataset.
The setup consists of two essential steps:
- Provision the assets for IAM Identification Middle, Amazon Redshift and Okta:
- Allow IAM Identification Middle and configure Okta because the IdP to handle consumer authentication and group provisioning.
- Create an Okta software to authenticate customers accessing the Streamlit software.
- Arrange an Amazon Redshift IAM Identification Middle connection software to allow trusted id propagation for safe authentication.
- Provision an Amazon Redshift Serverless
- Create the tables and configure RBAC throughout the Redshift workgroup to implement row-level safety for various IAM Identification Middle federated roles, mapped to IAM Identification Middle teams.
- Obtain, configure, and run the Streamlit software:
- Create a buyer managed software in IAM Identification Middle for the Redshift Knowledge API consumer (Streamlit software) to allow safe API-based queries and create the required IAM roles
- Configure the Streamlit software.
- Run the Streamlit software.
Stipulations
You must have the next stipulations:
Provision the assets for IAM Identification Middle, Amazon Redshift, and Okta
On this part, we stroll by way of the steps to provision the assets for IAM Identification Middle, Amazon Redshift, and Okta.
Allow IAM Identification Middle and configure Okta because the IdP
Full the next steps to allow IAM Identification Middle and configure Okta because the IdP to handle consumer authentication and group provisioning:
- Create the next customers and teams in Okta:
- Ethan International with electronic mail
ethan@instance.com, in groupexec-global - Frank Amer with electronic mail
frank@instance.com, in groupamer-sales - Alex Emea with electronic mail
alex@instance.com, in groupemea-sales - Ming Apac with electronic mail
ming@instance.com, in groupapac-sales
- Ethan International with electronic mail

- Create an IAM Identification Middle occasion within the AWS Area the place Amazon Redshift goes to be deployed. A company occasion kind is beneficial.
- Configure Okta because the id supply and allow computerized consumer and group provisioning. The customers and teams will likely be pushed to IAM Identification Middle utilizing SCIM protocol.
The next screenshot exhibits the customers synced in IAM Identification Middle utilizing SCIM protocol.

Create an Okta software
Full the next steps to create an Okta software to authenticate customers accessing the Streamlit software:
- Create an OIDC software in Okta.
- Copy and save the consumer ID and consumer secret wanted later for the Streamlit software and the IAM Identification Middle software to attach utilizing the Redshift Knowledge API.
- Generate the consumer secret and set sign-in redirect URL and sign-out URL to
http://localhost:8501(we’ll host the Streamlit software regionally on port 8501). - Below Assignments, Managed entry, grant entry to everybody.
- Create an OIDC IdP on IAM the console. The next screenshot exhibits an IdP created on the IAM console.

Arrange an Amazon Redshift IAM Identification Middle connection software
Full the next steps to create an Amazon Redshift IAM Identification Middle connection software to allow trusted id propagation for safe authentication:
- On the Amazon Redshift console, select IAM Identification Middle connection within the navigation pane.
- Select Create software.
- Title the applying
redshift-data-api-okta-app. - Word down the IdP namespace. The default worth
AWSIDCis used for this put up. - Within the IAM function for IAM Identification Middle entry part, you could present an IAM function. You’ll be able to go to the IAM console and create an IAM function referred to as
RedshiftOktaRolewith the next coverage and belief relationship.RedshiftOktaRoleis utilized by the Amazon Redshift IAM Identification Middle connection software to handle and work together with IAM Identification Middle.- The coverage hooked up to the function wants the next permissions:
- The function makes use of the next belief relationship:
- Go away Trusted Identification propagation part unchanged, then select Subsequent. You may have the choice to decide on AWS Lake Formation or Amazon S3 Entry Grants to be used circumstances like utilizing Amazon Redshift Spectrum to question exterior tables in Lake Formation. In our use case, we solely use Amazon Redshift native tables so we don’t select both.
- Within the Configure consumer connections that use third-party IdPs part, select No.
- Evaluate and select Create software.
- When the applying is created, navigate to your IAM Identification Middle connection
redshift-data-api-okta-appand select Assign so as to add the teams that have been synced in IAM Identification Middle utilizing SCIM protocol from Okta.
We are going to allow trusted id propagation and third-party IdP (Okta) on the client managed software for the Redshift Knowledge API in a later step as a substitute of configuring it within the Amazon Redshift connection software.
The next screenshot exhibits the IAM Identification Middle connection software created on the Amazon Redshift console.

The next screenshot exhibits teams assigned to the Amazon Redshift IAM Identification Middle connection for the managed software.

Provision a Redshift Serverless workgroup
Full the next steps to create a Redshift Serverless workgroup. For extra particulars, check with Making a workgroup with a namespace.
- On the Amazon Redshift console, navigate to the Redshift Serverless dashboard.
- Select Create workgroup.
- Enter a reputation to your workgroup (for instance,
redshift-tip-enabled). - Change the Base capability to eight RPU within the Efficiency and price management
- You’ll be able to configure community and safety primarily based in your digital personal cloud (VPC) and subnet you need to create the workgroup.
- Within the Namespace part, create a brand new namespace to your workgroup. (For instance,
redshift-tip-enabled-namespace). - Within the Database title and password part, choose Customise admin consumer credentials and set the admin consumer title and create a password. Word them down to make use of in a later step to configure RBAC in Amazon Redshift.
- Within the Identification Middle connections part, select Allow for the cluster possibility and choose the Amazon Redshift IAM Identification Middle software created within the earlier step (
redshift-data-api-okta-app). - Affiliate an IAM function with the workgroup that has the next insurance policies hooked up. Make it the default function to make use of.
- Go away different settings as default and select Subsequent.
- Evaluate the settings and create the workgroup.
Wait till the workgroup is on the market earlier than persevering with to the subsequent steps.

Create the tables and configure RBAC throughout the Redshift Serverless workgroup
Subsequent, you employ the Amazon Redshift Question Editor V2 on the Amazon Redshift console to hook up with the workgroup you simply created. You create the tables and configure the Amazon Redshift roles akin to Okta teams for the teams in IAM Identification Middle and use the RBAC coverage to grant customers privileges to view information just for their areas. Full the next steps:
- On the Amazon Redshift console, open the Question Editor V2.
- Select the choices menu (three dots) subsequent to the Redshift workgroup title and select Edit connection.

- Choose Different methods to attach and use the database consumer title and password to attach.
- Within the question editor, run the next code to create the gross sales desk and cargo the information from Amazon Easy Storage Service (Amazon S3):
IAM Identification Middle will map the teams into the Redshift roles within the format of Namespace:IDCGroupName. Due to this fact, create the function title as AWSIDC:emea-sales and so forth to match them with Okta group names synced in IAM Identification Middle. The customers will likely be created robotically throughout the teams as they log in utilizing SSO into Amazon Redshift.
Obtain, configure, and run the Streamlit software
On this part, we stroll by way of the steps to obtain, configure, and run the Streamlit software.
Create a buyer managed software in IAM Identification Middle for the Redshift Knowledge API consumer
With a purpose to begin a trusted id propagation workflow and permit Amazon Redshift to make authorization selections primarily based on the customers and teams from IAM Identification Middle (provisioned from the exterior IdP), you want an identity-enhanced IAM function session.
This requires a few IAM roles and a buyer managed software in IAM Identification Middle to deal with the belief relationship between the exterior IdP and IAM Identification Middle and management entry for the Redshift Knowledge API consumer, on this case, the Streamlit software.
First, you create two IAM roles, then you definately create a buyer managed software for the Streamlit software. Full the next steps:
- Create a short lived IAM function (we named it
IDCBridgeRole) to change the token with IAM Identification Middle (assuming you don’t have an present IAM id to make use of). This function will likely be assumed by the Streamlit software withAssumeRoleWithWebIdentityto get a short lived set of function credentials to name theCreateTokenWithIAMandAssumeRoleAPIs to get the identity-enhanced function session.- Connect the next coverage the function:
- Within the belief relationship, present your AWS account ID and IdP’s URL. The trusted principal to make use of is the Amazon Useful resource Title (ARN) of
oidc-provideryou created earlier.
- Create an IAM function with permissions to entry the Redshift Knowledge API (we named it
RedshiftDataAPIClientRole). This function will likely be assumed by the Streamlit software with the improved identities from IAM Identification Middle after which used to authenticate requests to the Redshift Knowledge API.- Connect the AmazonRedshiftDataFullAccess AWS managed coverage. AWS recommends utilizing the precept of least privilege in your IAM coverage.
- Prohibit the belief relationship to the
IDCBridgeRoleARN created within the earlier step), and supply your AWS account ID:
Now you’ll be able to create the client managed software.
- On the IAM Identification Middle console, select Functions within the navigation pane.
- Select Add software.
- Select I’ve an software I need to setup, choose the OAuth 2.0 software kind, and select Subsequent.
- Enter a reputation for the applying, for instance,
RedshiftStreamlitDemo. - In Consumer and group project methodology, select Don’t require project. This implies all of the customers provisioned in IAM Identification Middle from Okta can use their Okta credentials to check in to the Streamlit software. You’ll be able to alternatively choose the Require assignments possibility and choose the customers and teams you need to permit entry to the applying.
- Within the AWS entry portal part, select Not seen, then select Subsequent.
- Within the Authentication with trusted token issuer part, choose Create trusted token issuer, then enter the Okta issuer URL and enter a reputation for the trusted token issuer.
- Within the map attribute, use the default electronic mail to electronic mail mapping between the exterior IdP attribute and IAM Identification Middle attribute, then create the trusted token issuer.
- Choose the trusted token issuer you simply created.
- Within the Aud declare part, use the consumer ID of the Okta software you famous earlier, then select Subsequent.
- Within the Specify software credentials part, select Edit the applying coverage and use the next coverage:
- Select Submit.

After the applying is created, you’ll be able to view it in on the IAM Identification Middle.
- Select Functions within the navigation pane, and find the Buyer managed functions tab.

- Select the applying to navigate to the applying particulars web page.
- Within the Trusted functions for id propagation part, select Specify trusted functions and choose the setup kind as Particular person functions and specify entry, then select Subsequent.
- Select Amazon Redshift because the service, then select Subsequent.
- Within the Software that may obtain requests part, select the Amazon Redshift IAM Identification Middle software you created, then select Subsequent.
- Within the Entry Scopes to use part, test the redshift:join
- Evaluate after which select Belief software.

Configure and run the Streamlit software
Now that you’ve got the roles and the client managed software in IAM Identification Middle, you’ll be able to create an identity-enhanced IAM function session, which is probably the most crucial step to allow trusted id propagation. Following steps present an outline of Streamlit software code to create the identity-enhanced IAM function session.
- Authenticate with and retrieve the
id_tokenfrom the exterior IdP (Okta). - Name
CreateTokenWithIAMutilizing the exterior IdP issuedid_tokento acquire an IAM Identification Middle issuedid_token. - Use
AssumeRoleWithWebIdentityto acquire short-term IAM credentials (by assumingIDCBridgeRole, defined later). - Extract the
sts:identity_contextfrom the IAM Identification Middle issuedid_token. - Assume the function
RedshiftDataAPIClientRolewith theAssumeRoleAPI and insert thests:identity_contextto acquire the identity-enhanced IAM function session credentials.
Now you should use these credentials to make requests to the Redshift Knowledge API, and Amazon Redshift will have the ability to use the id context for authorization selections.
At this level, it is best to have all of the required assets for creating the Streamlit software. Full the next steps to check the Streamlit software:
- Obtain the Streamlit software code and modify the configuration part of the code primarily based on the assets provisioned earlier:
We advocate internet hosting this software on an Amazon Elastic Compute Cloud (Amazon EC2) occasion for manufacturing use circumstances, and utilizing AWS Secrets and techniques Supervisor for delicate info just like the CLIENT_ID and CLIENT_SECRET supplied as configuration parameters within the code for simplicity.
For this instance, we use the Okta group URL (/oauth2/v1/). You should use the client authorization servers as properly, for instance, the default authorization server, however be certain all URLs are utilizing the identical authorization server. Check with Authorization servers for extra details about authorization servers in Okta.

After you modify the script for the Streamlit software, you’ll be able to run it utilizing a Python digital surroundings.
- Create a Python digital surroundings. The appliance has been examined efficiently with variations v3.12.8 and v3.12.2.
You should set up the next packages, that are required libraries for the Streamlit software code you downloaded in your digital surroundings:
streamlitstreamlit_oauthboto3pyjwtpydeckpandas
- You’ll be able to set up these libraries straight utilizing the next command with the necessities file:
- Take a look at the Streamlit software within the Python digital surroundings with the next command:
- Log in with the consumer ming@instance.com from the
apac-salesgroup.
The identity-enhanced function session credentials will show on the highest of the web page after profitable authentication with Okta.
For the APAC area supervisor, it is best to solely see the information from the international locations within the Asia-Pacific area primarily based on the row-level safety filter you configured earlier.

- Sign off and log again in with the worldwide govt consumer, ethan@instance.com from the
exec-global
You must see the information in all areas.

You’ll be able to attempt different regional customers’ logins and it is best to see solely the information within the area they belong to.
Trusted id propagation deep dive
On this part, you stroll by way of the Python code of the Streamlit software and clarify how trusted id propagation works. The next is an evidence of key components of the applying code.
essential()
The essential() perform of the Streamlit software implements the previous steps to get the identity-enhanced IAM function session utilizing the get_id_enhanded_session() perform, which wraps the login to get the identity-enhanced function session credentials:
We use the Streamlit st.session_state supplied by Streamlit to retailer vital session states, together with the authentication standing in addition to extra info like consumer info and the AWS identity-enhanced function session credentials.
get_id_enhanced_session()
The get_id_enhanced_session() perform code has three steps:
- We use the
id_token(variable title:jwt_token) from Okta in JWT format to name theAssumeRoleWithWebIdentityAPI to imagine the functionIDCBridgeRole. It is because the consumer doesn’t have any AWS credentials to work together with the IAM Identification Middle API. For those who plan to host this software in an AWS surroundings with an IAM function accessible, for instance, on an EC2 occasion, you should use the function related to Amazon EC2 to make the decision to the IAM Identification Middle APIs with out creatingIDCBridgeRole, however be certain the EC2 function has the required permissions we specified forIDCBridgeRole. - After we have now the credentials of the short-term function, we use them to make a name to the
CreateTokenWithIAMAPI of IAM Identification Middle. This API handles the change of tokens by taking within theid_tokenfrom Okta and returning an IAM Identification Middle issued token, which will likely be used later to get the identity-enhanced function session. For extra info, check with the CreateTokenWithIAM API reference. - Lastly, we extract the
sts:identity_contextfrom the IAM Identification Middle issuedid_tokenand move it to the AWS Safety Token Service (AWS STS)AssumeRoleThat is carried out by together with thests:identity_contextwithin theContextAssertionparameter insideProvidedContexts, together withProviderArnset toarn:aws:iam::aws:contextProvider/IdentityCenter.
assume_role_with_web_identity()
The assume_role_with_web_identity() perform code is as follows. We initialize the STS consumer, decode the JWT token, after which assume the function with the online id.
create_token_with_iam()
The create_token_with_iam() perform code is known as to get the id_token from IAM Identification Middle. The jwt_token is the id_token in JWT format issued by Okta; the id_token is the IAM Identification Middle issued id_token.
Within the CreateTokenWithIAM name, we move the next parameters:
- clientId – The ARN of the IAM Identification Middle software for the Redshift Knowledge API consumer
- grantType –
urn:ietf:params:oauth:grant-type:jwt-bearer - assertion – The
id_token(jwt_token) issued by Okta
The idToken issued by IAM Identification Middle is returned.
assume_enhanced_role_session()
The assume_enhanced_role_session() perform makes use of the ID token to imagine an identity-enhanced function session:
extract_identity_context_from_id_token()
The extract_identity_context_from_id_token() perform extracts the sts:identity_context:
Now you have got the identity-enhanced function session credentials to name the Amazon Redshift Knowledge API.
execute_statement() and fetch_results()
The execute_statement() and fetch_results() capabilities reveal learn how to run Redshift queries and retrieve question outcomes with trusted id propagation for visualization:
Conclusion
On this put up, we confirmed learn how to create a third-party software backed by analytics insights arriving from Amazon Redshift securely utilizing OIDC. With Redshift Knowledge API assist of IAM Identification Middle integration, you’ll be able to connect with Amazon Redshift utilizing SSO from the IdP of your alternative. You’ll be able to prolong this methodology to authenticate different AWS companies that assist trusted id propagation, reminiscent of Amazon Athena and Amazon QuickSight, enabling fine-grained entry management for IAM Identification Middle customers and teams throughout your AWS ecosystem. We encourage you to arrange your software utilizing IAM Identification Middle integration and unify your entry management straight out of your IdP throughout all IAM Identification Middle supported AWS companies.
For extra info on AWS companies and functions that assist trusted id propagation, check with Trusted id propagation overview.
Concerning the Authors
Songzhi Liu is a Principal Large Knowledge Architect with the AWS Identification Options workforce. On this function, he collaborates intently with AWS clients and cross-functional groups to design and implement scalable information architectures, specializing in integrating huge information and machine studying options to boost id consciousness throughout the AWS ecosystem.
Rohit Vashishtha is a Senior Analytics Specialist Options Architect at AWS primarily based in Dallas, Texas. He has over 19 years of expertise architecting, constructing, main, and sustaining huge information platforms. Rohit helps clients modernize their analytic workloads utilizing the breadth of AWS companies and ensures that clients get the perfect worth/efficiency with utmost safety and information governance.
Fei Peng is a Senior Software program Improvement Engineer working within the Amazon Redshift workforce, the place he leads the event of Redshift Knowledge API, enabling seamless and scalable entry to cloud information warehouses.
Yanzhu Ji is a Product Supervisor within the Amazon Redshift workforce. She has expertise in product imaginative and prescient and technique in industry-leading information merchandise and platforms. She has excellent talent in constructing substantial software program merchandise utilizing internet improvement, system design, database, and distributed programming methods. In her private life, Yanzhu likes portray, images, and taking part in tennis.





