{
  "Framework": "CIS",
  "Provider": "AWS",
  "Version": "1.4",
  "Requirements": [
    {
      "Id": "1.4",
      "Description": "Ensure no 'root' user account access key exists (Automated)",
      "Attributes": [
        {
          "Section": "1. Identity and Access Management (IAM)",
          "Level": [
            "level1"
          ],
          "Rationale": "Removing access keys associated with the 'root' user account limits vectors by which the account can be compromised. Additionally, removing the 'root' access keys encourages the creation and use of role based accounts that are least privileged.",
          "Guidance": "The 'root' user account is the most privileged user in an AWS account. AWS Access Keys provide programmatic access to a given AWS account. It is recommended that all access keys associated with the 'root' user account be removed.",
          "Additional information": "IAM User account \"root\" for us-gov cloud regions is not enabled by default. However, on request to AWS support enables 'root' access only through access-keys (CLI, API methods) for us-gov cloud region.",
          "References": [
            "CCE-78910-7",
            "https://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html",
            "https://docs.aws.amazon.com/general/latest/gr/managing-aws-access-keys.html",
            "https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccountSummary.html",
            "https://aws.amazon.com/blogs/security/an-easier-way-to-determine-the-presence-of-aws-account-access-keys/"
          ]
        }
      ],
      "Checks": [
        "iam_avoid_root_usage"
      ]
    },
    {
      "Id": "1.10",
      "Description": "Ensure multi-factor authentication (MFA) is enabled for all IAM users that have a console password (Automated)",
      "Attributes": [
        {
          "Section": "1. Identity and Access Management (IAM)",
          "Level": [
            "level1"
          ],
          "Guidance": "Multi-Factor Authentication (MFA) adds an extra layer of authentication assurance beyond traditional credentials. With MFA enabled, when a user signs in to the AWS Console, they will be prompted for their user name and password as well as for an authentication code from their physical or virtual MFA token. It is recommended that MFA be enabled for all accounts that have a console password.",
          "Rationale": "Enabling MFA provides increased security for console access as it requires the authenticating principal to possess a device that displays a time-sensitive key and have knowledge of a credential.",
          "Impact": "AWS will soon end support for SMS multi-factor authentication (MFA). New customers are not allowed to use this feature. We recommend that existing customers switch to one of the following alternative methods of MFA.",
          "Additional information": "Forced IAM User Self-Service Remediation. Amazon has published a pattern that forces users to self-service setup MFA before they have access to their complete permissions set. Until they complete this step, they cannot access their full permissions. This pattern can be used on new AWS accounts. It can also be used on existing accounts - it is recommended users are given instructions and a grace period to accomplish MFA enrollment before active enforcement on existing AWS accounts.",
          "References": [
            "CCE-78901-6",
            "https://tools.ietf.org/html/rfc6238",
            "https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa.html",
            "https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#enable-mfa-for-privileged-users",
            "https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_enable_virtual.html",
            "https://blogs.aws.amazon.com/security/post/Tx2SJJYE082KBUK/How-to-Delegate-Management-of-Multi-Factor-Authentication-to-AWS-IAM-Users"
          ]
        }
      ],
      "Checks": [
        "iam_user_mfa_enabled_console_access"
      ]
    },
    {
      "Id": "2.1.1",
      "Description": "Ensure all S3 buckets employ encryption-at-rest (Automated)",
      "Attributes": [
        {
          "Section": "2. Storage",
          "Level": [
            "level2"
          ],
          "Guidance": "Amazon S3 provides a variety of no, or low, cost encryption options to protect data at rest.",
          "Rationale": "Encrypting data at rest reduces the likelihood that it is unintentionally exposed and can nullify the impact of disclosure if the encryption remains unbroken.",
          "Impact": "Amazon S3 buckets with default bucket encryption using SSE-KMS cannot be used as destination buckets for Amazon S3 server access logging. Only SSE-S3 default encryption is supported for server access log destination buckets.",
          "Additional information": "S3 bucket encryption only applies to objects as they are placed in the bucket. Enabling S3 bucket encryption does not encrypt objects previously stored within the bucket",
          "References": [
            "https://docs.aws.amazon.com/AmazonS3/latest/user-guide/default-bucket-encryption.html",
            "https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html#bucket-encryption-related-resources"
          ]
        }
      ],
      "Checks": [
        "s3_bucket_default_encryption"
      ]
    }
  ]
}
