Implementing AWS Control Tower with SAML


OneLogin is an Identity Federation solution that performs Identity and Access Management (IAM) on the AWS cloud. Implementing this solution, you can seamlessly provide appropriate identity safeguards and automation as you scale your AWS Multi-Account environment.

The purpose of this AWS Implementation Guide is to enable every AWS Marketplace customer to activate, deploy and configure OneLogin in their AWS Control Tower environment while taking full advantage of the resources pre-configured by AWS Control Tower as part of the initialization.

Check out this video for a quick overview on OneLogin's integration with AWS Control Tower.

Solution Overview and Features

Cloud user and account setup and access management can quickly get complicated as you build out your AWS environment, but AWS Control Tower provides the easiest path to build a baseline environment based on best industry practices. OneLogin's IAM integrates with AWS's to ensure that your organization has the appropriate identity safeguards and automation as you scale your multi-account, multi-role environment.

OneLogin can help scale your AWS infrastructure securely and seamlessly with:

Architecture Diagram

Implementing strong, scalable IAM is a best practice for security and scalability. OneLogin's Trusted Experiences Platform is built to seamlessly manage all digital identities for your workforce and customers from the cloud. With OneLogin's powerful authentication and role-based user provisioning engine, quickly enable SSO across mobile, web and desktop, enforce MFA and security policies like password complexity and IP restriction, and automate user account provisioning across your corporate applications. OneLogin's automated AWS role provisioning enables organizations to streamline the most complicated of user policies and assign least-privileged policies to hundreds or thousands of permissions. OneLogin also enhances AWS's native security capabilities and is commonly used alongside AWS STS, AWS Organizations, AWS Session Tags, AWS Control Tower, AWS IAM, and Amazon EventBridge.

OneLogin integrates with AWS Control Tower in two ways:

In this document, you can find the implementation guidelines for the second scenario where OneLogin and AWS Control Tower are integrated using SAML roles. OneLogin provides a sample CloudFormation Template that is used to set up identity federation with OneLogin, as well as to provide guidance on sample AWS IAM Roles and permissions in the different AWS accounts. After AWS Control Tower creates the various AWS accounts, OneLogin can perform identity federation via AWS IAM Identity Center or directly to the accounts themselves.

AWS CT - OneLogin to AWS (diagram)
In this scenario, OneLogin performs identity federation with IAM Identity Center. An end user would then sign in to the various AWS accounts using IAM Identity Center.

Deployment and Configuration

Connecting OneLogin & AWS Control Tower with SAML

This topic describes how to use SAML to connect OneLogin with AWS Control Tower.

Adding a new Amazon Web Services Application to OneLogin

  1. Log in to OneLogin as an administrator and click Administration in the upper-right corner.
  2. Go to Applications > Applications, then click Add Application.
  3. Search for and select Amazon Web Services (AWS) Multi Account. Click Save.
  4. Go to Configuration, then click Generate Token. Copy the value generated into a separate document for later use. Click Save.
  5. Open the More Actions menu, right-click SAML Metadata, and select Copy Link Address.
    OneLogin admin - SAML Metadata
  6. Keep the OneLogin tab open as you proceed to next sections.

Deploying OneLogin Within AWS Control Tower

Architecture Overview

OneLogin and AWS Architecture (diagram)
  1. Download the CloudFormation aws-onelogin-integration template, then go to the CloudFormation StackSet console in the Master account and click Create StackSet.
  2. Select Upload a Template File, then choose aws-onelogin-integration.template and click Next.
    AWS CloudFormation StackSets (screenshot) AWS Choose a Template (screenshot)
  3. Choose a name for your StackSet and configure your template parameters.
    AWS Template Parameters (screenshot)
    1. Determine if you require these roles for the Control Tower integration. They're created by default; if you don't want to create them, select false.
    2. Paste the OneLogin Identity Provider Metadata URL you copied from your OneLogin AWS application configuration.
    3. Set the OLExternalId, that will be assigned to the Role that uses OneLogin to extract the Role List. This is probably Amazon Web Services (AWS) Multi Account unless you changed its name.
  4. Click Next.
  5. On the Configure StackSet options page, choose Self Service Permissions under the Permission section, then navigate to the IAM Admin Role ARN section and select AWSControlTowerStackSetRole from the IAM Role Name list.
  6. Enter AWSControlTowerExecution for the IAM Execution role name and click on Next.
  7. Specify the Accounts and Region to deploy into - Accounts, Organizational Units (OUs), or a CSV list of valid accounts - and click Next. These are the accounts that you want to use OneLogin to federate.
  8. Review and acknowledge the IAM box, then click Submit. It may take a moment for instances to appear.
    AWS IAM Capabilities Confirmation

Completing Your AWS Multi-Account Configuration in OneLogin

Note: A more detailed version of these instructions can be found in Configuring SAML for Amazon Web Services (AWS) with Multiple Accounts and Roles.
  1. Return to your OneLogin tab and set the External Role Name as the name of the Role you used in the aws-onelogin-integration.template from StackSet. By default, the role's name is OLGetRoles.
  2. Add the List of SAML Identity Providers created by the StackSet. The format is arn:aws:iam::account-id:saml-provider/idp-name.
    • The account-id is the AWS account you selected for identity management
    • The idp-name is the name you used on the template in the aws-onelogin-integration.template from StackSet (the default is OLIDP).
    OneLogin admin - AWS Configuration (screenshot)
    Note: You can look up your IdP ARN in your AWS account > IAM Console > Identity providers.
  3. Click Enable under API Connection.
    OneLogin admin - Configuration - Enable API Connection
  4. Click Save, then open the More Actions menu to Reapply entitlement mappings.
  5. Go to Provisioning, select Enable Provisioning, and click Refresh under Entitlements. Click Save.
    OneLogin admin - Provisioning - Refresh entitlements (screenshot)

Optional: Mapping OneLogin Roles to AWS Multi-Accounts

  1. Go to Access to assign the OneLogin roles that should have access to the AWS Multi-Account app and select an app security policy. For example, you can attach a policy to the app to require multi-factor authentication or you can navigate to Users > Users to add the app to individual user accounts.
    OneLogin admin - App policies

Creating Rules on OneLogin to Assign to AWS Accounts/Roles

  1. Go Rules, click Add Rule, give your Rule a name, and Save the Rule.
    OneLogin admin - Rules (screenshot)
  2. Open the More Actions menu and select Reapply Provisioning Mappings.
    OneLogin admin - Reapply Provisioning Mappings (screenshot)
    Note: You must reapply mappings any time you create or update rules. In order for a user's AWS accounts and roles to be included in the SAML assertion when they use OneLogin SSO to log into AWS, they must first have been subject to a provisioning event, like reapplying a provisioning mapping.
  3. Repeat for each group of OneLogin users that requires access to a particular set of AWS account-role pairs.
    Note: If the administrator has already given the user access to your AWS Multi-Account app in OneLogin, they can also assign individual OneLogin users to AWS account-role pairs by selecting the account-role pairs directly on the user's login record for the app.
    1. Go to Users in the AWS Multi-Account App edit page and select the user from the Users list.
    2. Select the roles you want to assign from the Available Values list.
    3. Click the right arrow to add them to the Selected Values list.
    4. Click Save.
  4. Users are now presented with an AWS page that lets them choose from the accounts and roles you’ve given them access to.
    AWS - Choose Accounts/Roles

 


 

Supplementary Information


Best Practices

  • Aim for least privileged access to AWS.
  • Think through your AWS IAM roles and permissions.
  • Determine how you would want your AWS IAM structure to look like for the Control Tower created accounts and your production AWS accounts.

Partner contact information

For questions, contact partners@onelogin.com.