Skip to content

Latest commit

 

History

History
116 lines (78 loc) · 5.84 KB

File metadata and controls

116 lines (78 loc) · 5.84 KB
title How to Create `SuperAdmin` user
sidebar_label Create the `SuperAdmin`
sidebar_position 23
description Create `SuperAdmin` for secure, controlled AWS root access.

import Intro from '@site/src/components/Intro'; import Steps from '@site/src/components/Steps'; import Step from '@site/src/components/Step'; import StepNumber from '@site/src/components/StepNumber';

The `SuperAdmin` user is recommended for performing certain high-risk administrative tasks that modify IAM permissions affecting users on SSO or SAML. We don't recommend making these types of changes with your own SSO or SAML identity because a misconfiguration could lead to account lockout. This guide outlines the steps to create a secure `SuperAdmin` user in AWS, including setting permissions, enabling MFA, and storing credentials safely in 1Password.

Follow the prerequisites steps in the How-to Get Started guide

### Create the SuperAdmin User
First, create the SuperAdmin IAM user in the AWS web console.

<Steps>
  1. Login to the AWS `root` account using the root credentials.

  1. In the IAM console, select "Users" on the sidebar.
     <img src="/assets/refarch/image-20210720-181056.png" />

  1. Click "Add users" button
     <img src="/assets/refarch/image-20210720-181130.png" />
     <img src="/assets/refarch/image-20210720-181200.png" />

  1. Enter "SuperAdmin" for "User name" and check "Programmatic access" and leave "AWS Management Console access" unchecked. Click "Next: Permissions"
     <img src="/assets/refarch/image-20210720-181251.png" />

  1. Under "Set permissions", select "Attach existing policies directly". A list should appear, from which you should check "AdministratorAccess". Click "Next: Tags"
     <img src="/assets/refarch/image-20210720-181512.png" />

  1. Skip the tags, Click "Next: Review"

  1. Review and click "Create user"

  1. The Success page should show you the "Access key ID" and hidden "Secret access key" which can be revealed by clicking "Show". Copy these to your secure credentials storage as you will need them shortly
     <img src="/assets/refarch/image-20210720-181626.png" />

  1. Click "Close" to return to the IAM console. Select "Users" on the sidebar if it is not already selected. You should see a list of users. Click the user name "SuperAdmin" (which should be a hyperlink) to take you to the Users -> SuperAdmin "Summary" page
     <img src="/assets/refarch/image-20210720-182019.png" />

  1. On the "Users -> SuperAdmin" "Summary" page, click on the "Security credentials" tab

  1. In the "Sign-in credentials" section, find: "Assigned MFA device: Not assigned | Manage" and click "Manage"
     <img src="/assets/refarch/image-20210720-182257.png" />

  1. Choose "Virtual MFA device" and click "Continue"
     <img src="/assets/refarch/image-20210720-182421.png" />

  1. Press the "Show secret key" button
     <img src="/assets/refarch/image-20210721-151123.png" />

  1. Copy the key into 1Password as a AWS Credential using the "MFA" field
     <img src="/assets/refarch/image-20210721-151429.png" />

  1. Use the MFA codes from 1Password to complete the MFA setup process (you will input 2 consecutive codes)
     <img src="/assets/refarch/image-20210721-151622.png" />

  1. You should be taken back to the "Security Credentials" tab, but now the "Assigned MFA device" field should have an ARN like `arn:aws:iam::<account-number>:mfa/SuperAdmin`
     <img src="/assets/refarch/image-20210720-182914.png" />

  1. Copy the ARN and keep it with the Access Key in 1Password

  1. Now we need to create an Access Key for CLI access. Click on the "Create Access Key" under "Access Keys"

  1. Select "Command Line Interface" and click the "I understand..." checkbox then click 'Next'

  1. Enter a description if you like, such as 'SuperAdmin CLI Access' and click 'Create'
</Steps>
### Store SuperAdmin Credentials in 1Password
The `SuperAdmin` credentials should be properly stored in 1Password. Relative to other potential 1Password item types, the most appropriate 1Password item type for these credentials is `login`. Since these are programmatic credentials and not an actual login with an endpoint from which the website favicon can be retrieved. Additionally, the password field should be kept empty. For convenience in retrieving the TOTP code when using Leapp, save `com.leapp.app` as a website URL.

<Steps>
  1. Set the username to `SuperAdmin`
  1. Create fields for the `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, and the TOTP (known as One Time Password field type in 1password) via the AWS virtual MFA device's secret
  1. Add a note in the following format:

     ```
     This account's Access Key should be made inactive when not needed.

     CURRENT STATUS: ACTIVE

     Use this account for API/command line access to administrative functions that IAM roles cannot do, such as provision IAM roles.

     This account should not be allowed to log in to the AWS console, and therefore does not have a password.

     Root account ID: [AWS ACCOUNT ID]

     User ARN arn:aws:iam::[AWS ACCOUNT ID]:user/SuperAdmin

     MFA Device ARN arn:aws:iam::[AWS ACCOUNT ID]:mfa/SuperAdmin
     ```

     The resulting entry in 1password should appear as follows:
     <img src="/assets/refarch/image-20211016-220615.png" />

  1. Hit save once you are done. Once the SuperAdmin credentials need to be disabled, do not forget to update the notes in this item
</Steps>

References

REFARCH-73 - Provision SuperAdmin User for Root Level IAM Management