使用 CloudFormation 创建 IAM 账户

Create IAM account with CloudFormation

我想创建一个具有 CloudFormation 各种权限的 AWS IAMS 帐户。

我了解有些政策可以让用户更改密码并让他的帐户使用 MFA here

当用户需要更改默认密码时,我如何强制用户在首次登录时使用 MFA?

这是我的:

目前我的流量是:

  1. 用户帐户已创建
  2. 当用户第一次尝试登录时,系统会要求更改默认密码。
  3. 用户已登录 AWS 控制台。

预期行为:

  1. 用户帐户已创建
  2. 当用户第一次尝试登录时,系统会要求更改默认密码并使用 Authenticator 应用程序设置 MFA。
  3. 用户已登录 AWS 控制台并具有权限。

显示潜在的流量here。还有别的办法吗?

更新:

这个blog解释流程 再次,有没有更好的方法?就像会立即强制用户使用的自动弹出窗口一样?

更新2:

我可能不够明确。 到目前为止,我们拥有的是良好的客户体验。 这种流动将是流动的

  1. 用户尝试登录

  2. 控制台要求更改密码

  3. Colsole求扫码介绍

  4. 用户使用新密码和验证码登录 5.User 无法停用 MFA

如果您使用的是常规 IAM,则允许用户自行管理 MFA。可以试试AWS SSO,更容易管理,而且免费。

允许用户登录、更改密码、设置 MFA,如果未按照所列设置 MFA,则拒绝除这些以外的所有操作 here

我们可以创建一个具有内联策略的 IAM 组并将用户分配到该组。 这是文档中列出的策略的 CF。

Resources:
  MyIamGroup:
    Type: AWS::IAM::Group
    Properties:
      GroupName: My-Group
  MyGroupPolicy:
    Type: AWS::IAM::Policy
    Properties:
      PolicyDocument:
        Statement:
          - Action:
              - iam:GetAccountPasswordPolicy
              - iam:GetAccountSummary
              - iam:ListVirtualMFADevices
              - iam:ListUsers
            Effect: Allow
            Resource: "*"
          - Action:
              - iam:ChangePassword
              - iam:GetUser
            Effect: Allow
            Resource:
              Fn::Join:
                - ""
                - - "arn:"
                  - Ref: AWS::Partition
                  - :iam::1234567891111:user/${aws:username}
          - Action:
              - iam:CreateVirtualMFADevice
              - iam:DeleteVirtualMFADevice
            Effect: Allow
            Resource:
              Fn::Join:
                - ""
                - - "arn:"
                  - Ref: AWS::Partition
                  - :iam::1234567891111:mfa/${aws:username}
          - Action:
              - iam:DeactivateMFADevice
              - iam:EnableMFADevice
              - iam:ListMFADevices
              - iam:ResyncMFADevice
            Effect: Allow
            Resource:
              Fn::Join:
                - ""
                - - "arn:"
                  - Ref: AWS::Partition
                  - :iam::1234567891111:user/${aws:username}
          - NotAction:
              - iam:CreateVirtualMFADevice
              - iam:EnableMFADevice
              - iam:GetUser
              - iam:ListMFADevices
              - iam:ListVirtualMFADevices
              - iam:ListUsers
              - iam:ResyncMFADevice
              - sts:GetSessionToken
            Condition:
              BoolIfExists:
                aws:MultiFactorAuthPresent: "false"
            Effect: Deny
            Resource: "*"
      PolicyName: My-Group-Policy
      Groups:
        - Ref: MyIamGroup

我认为这是要走的路,可以提取在用户设置 MFA 后创建具有他想要的任何权限的用户的知识。

策略模板很有用。

instructions