Looking for Okta Logos?

You can find all the media assets you need as part of our press room.

Download Media Assets

Okta and AWS Partner to Simplify Access Via Session Tags

Joel Franusic
Joël Franusic
Sr. Product Marketing Manager

In order to gain more control over their access to AWS resources, Okta administrators often need to create numerous AWS roles. This allows them to manage which users have access to sensitive and/or expensive AWS resources.

The challenge this creates is the screen below, where, throughout the day, users need to switch between various roles to get their work done.

GEvmEE50 qpCsIuDzg mrGDinV 81Id9KMR3lQHWv 1u IeRMHTJNfI0bKMeova0MGllW1atX XKIuerMhyIpoHyg0hPmcxSyTGR1eTprSlmnKI6jHCKu6 AEXPOQFscOCJ8VdzA

Another challenge Okta administrators face is the need to modify existing policies to cover new resources. With AWS Session Tags, you can take a new approach around attribute-based access.

As resources come and go in your AWS environment, you can set a policy that grants access based on attributes. AWS Session Tags set the appropriate context for what can be accessed, ensuring that the user always has access to the correct resources.

In this post, we’ll provide some details on how you can use Okta’s Dynamic SAML Attributes with AWS Session Tags to simplify operations, giving you more control over what your users can see in AWS, plus a faster and easier experience when logging into it.

Note: Dynamic SAML Attributes is currently in Early Access and can be enabled in your production org by contacting Okta Customer Support and asking for the feature flag OIN_SAML2_DYNAMIC_ATTRIBUTES to be enabled.

What are AWS Session Tags?

AWS Session Tags allow you to simplify your end users’ SSO experience while giving you much more precise control over what each individual user can access.

In more concrete terms, AWS Session Tags are extra attributes that an IdP like Okta can add to SAML assertions or OIDC tokens. Then, on the AWS side, you will define IAM policies with conditions that only allow access to AWS resources with tags that match what is being passed in the Session Tags set by Okta.

If you’re familiar with SAML, an AWS Session Tag is simply a saml2:Attribute where the name is prefixed with “https://aws.amazon.com/SAML/Attributes/PrincipalTag:” or contains “https://aws.amazon.com/SAML/Attributes/TransitiveTagKeys”

As you may have noted above, there are two types of AWS Session Tags: “PrincipalTag” and “TransitiveTagKeys”

A “PrincipalTag” should contain the Okta profile attribute that you want to send to AWS. Examples of attributes you might want to sent to AWS include: countryCode, costCenter, organization, division, and department.

An example of setting “costCenter” as a “PrincipalTag” is shown below:

<saml2:Attribute Name="https://aws.amazon.com/SAML/Attributes/PrincipalTag:costCenter"
        NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
    <saml2:AttributeValue xmlns:xs="http://www.w3.org/2001/XMLSchema"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                xsi:type="xs:string">
        31415926
    </saml2:AttributeValue>
</saml2:Attribute

The TransitiveTagKeys attribute is optional, and used to tell AWS that you want to persist a “PrincipalTag” from session to session (for example, when moving between AWS accounts).

An example of setting the “costCenter” “PrincipalTag” as a Transitive Tag Key is below:

<saml2:Attribute Name="https://aws.amazon.com/SAML/Attributes/TransitiveTagKeys"
        NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
    <saml2:AttributeValue xmlns:xs="http://www.w3.org/2001/XMLSchema"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:type="xs:string">
        costCenter
    </saml2:AttributeValue>
</saml2:Attribute>

Note: Using TransitiveTagKeys with Okta requires that your Okta org has the SAML_SUPPORT_ARRAY_ATTRIBUTES feature enabled. If you want to make use of the optional TransitiveTagKeys attribute, you’ll need to contact Okta support and request enablement of the SAML_SUPPORT_ARRAY_ATTRIBUTES feature.

What can you do with AWS Session Tags?

Imagine that you work for a company that has three different teams, and each team has three to four projects each.

If your company wanted to give your users access to only the resources they needed, you would have to have between 3 and 12 different roles in AWS. These roles would need to map to the exact attributes or resources specific to each role, then figure out how to assign those roles. Should they be assigned based on team membership, or project membership? How would you handle projects that span multiple teams? How would you handle things when a new project starts?

No matter how you group the users and assign roles, it’s likely that your users would have multiple roles assigned to them, and they’d have to switch between roles on a regular basis.

With AWS Session Tags, you can do away with all of that complexity. Okta simply passes along the teams and projects that each user is a member of, then create policies in AWS based on those memberships.

How to configure AWS Session Tags in Okta

AWS Session Tags can be configured in Okta using the Dynamic SAML Attributes feature inside of Okta.

To configure AWS Session Tags using the example with “team” and “project” attributes as discussed above, do the following:

  1. As an Admin, open the Amazon Web Services app in Okta.
  2. Open the Sign On tab of the Amazon Web Services app.
  3. Click the Edit button
  4. Open up the Attributes (Optional) portion of the SAML 2.0 sign-on method section.

You should see a page like the one below.

sLzdbsjScGgv6Y1db4FM8r9TWymBsUYBZw7HXBU UK0hpHylog58 rpPbapa5FX NpnBiO6BFfey51EEhdUaa8dcjzoqYTmAS4tZM0sJnZ1aghgQ8kVKaSUIJQzktUR8piK2Z9hL

Once you’ve opened the Attributes section, configure it as follows:




Name

Name format

Value

https://aws.amazon.com/SAML/Attributes/PrincipalTag:team

URI Reference

user.team
https://aws.amazon.com/SAML/Attributes/PrincipalTag:project

URI Reference

user.project
https://aws.amazon.com/SAML/Attributes/TransitiveTagKeys

URI Reference

{"team", "project"}

As a reminder, using the optional TransitiveTagKeys attribute requires that your Okta org has the SAML_SUPPORT_ARRAY_ATTRIBUTES feature enabled. Contact Okta support and ask for enablement of the SAML_SUPPORT_ARRAY_ATTRIBUTES feature.

Also note that this example uses custom “team” and “project” claims, which you would need to add to your Okta User Profile as well as the App User Profile for your AWS app. If you are not familiar with custom user profile attributes, access the Okta Help Center article on how to work with Okta user profiles and attributes for more details.

Once you are done adding the attributes to your AWS App in Okta, click the Preview SAML button. You should get a SAML preview that looks like this:

<saml2:Attribute
Name="https://aws.amazon.com/SAML/Attributes/PrincipalTag:team"
NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
  <saml2:AttributeValue xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="xs:string">user.team</saml2:AttributeValue>
</saml2:Attribute>
<saml2:Attribute
Name="https://aws.amazon.com/SAML/Attributes/PrincipalTag:project"
NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
  <saml2:AttributeValue xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="xs:string">user.project</saml2:AttributeValue>
</saml2:Attribute>
<saml2:Attribute
Name="https://aws.amazon.com/SAML/Attributes/TransitiveTagKeys"
NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
  <saml2:AttributeValue xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="xs:string">{"team", "project"}</saml2:AttributeValue>
</saml2:Attribute>

You may notice that the “TransitiveTagKeys” tag contains the string {"team", "project"}; this is just for the preview. The real SAML Assertion will contain the proper nested attributes, provided that the SAML_SUPPORT_ARRAY_ATTRIBUTES feature is enabled in your Okta org.

Once completed, you’ll need to create or update the policies in AWS IAM to reflect the names of attributes being passed in the SAML Assertion (“team” and “project” in this example.) For an example of how to do this, see the AWS Documentation on Session Tags.

Looking for more?

This post covered the new Session Tags feature in AWS with an example of how you might use it with Okta. This coupling gives you greater efficiency and control over your cloud resources. Haven’t used Okta for AWS yet? Try it for free by signing up for an Okta account today.

And if you’re looking for more detailed documentation, check out our Dynamic SAML Attributes article in the Okta Help Center. To learn more about AWS Session Tags, check out the AWS Documentation.

Joel F
Joël Franusic
Sr. Product Marketing Manager

Joël Franusic is a hacker and evangelist at Okta, where he makes simple things simple and complex things possible. Joël's work includes writing Okta's sample code for implementing SAML in Python and PHP, as well as the first SCIM sample server and accompanying documentation, and coding the Okta OpenVPN plugin. For fun, Joël reads over 24 books a year, is a fan of computer history (ask him about his Symbolics MacIvory), and writes literate programs as often as humanly possible.

Follow Joël Franusic icon LinkedIn