Создать только пользователя S3 - PullRequest
0 голосов
/ 05 мая 2019

Я пытаюсь создать только пользователя S3, который по определению не будет иметь доступа ни к какому другому ресурсу. Пользователь может загружать и скачивать файлы с S3. Я создал базовый шаблон, который можно найти здесь ...

https://github.com/shantanuo/aws-cloudformation-templates/blob/master/aws/services/IAM/IAM_Users_Groups_and_Policies.yaml

Но это разрешает доступ к облачной информации, которая не нужна в моем случае. Я прочитал следующие страницы, но не знаю, как включить их в свой шаблон.

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-user.html

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html

https://docs.aws.amazon.com/AWSCloudForation/latest/UserGuide/aws-properties-iam-group.html

Какие минимальные параметры требуются для создания только пользователя S3?


Обновление: Вот код облачной информации, который я пробовал, и ошибка, которую я получил:

сообщение об ошибке: Не удалось создать следующий ресурс (ы): [CFNRole, CFNUser]. , Откат по запросу пользователя.

Шаблон:

Parameters:
  NewUsername:
    NoEcho: 'false'
    Type: String
    Description: New account username
    MinLength: '1'
    MaxLength: '41'
    ConstraintDescription: the username must be between 1 and 41 characters
  Password:
    NoEcho: 'true'
    Type: String
    Description: New account password
    MinLength: '1'
    MaxLength: '41'
    ConstraintDescription: the password must be between 1 and 41 characters

Resources:
  CFNUser:
    Type: AWS::IAM::User
    Properties:
      LoginProfile:
        Password: !Ref 'Password'
      UserName : !Ref 'NewUsername'
  CFNRole:
    Type: AWS::IAM::Role
    Properties :
      PermissionsBoundary : arn:aws:iam::aws:policy/AmazonS3FullAccess
      RoleName : 'myPermissionBoundary'
  CFNKeys:
    Type: AWS::IAM::AccessKey
    Properties:
      UserName: !Ref 'CFNUser'

Outputs:
  AccessKey:
    Value: !Ref 'CFNKeys'
    Description: AWSAccessKeyId of new user
  SecretKey:
    Value: !GetAtt [CFNKeys, SecretAccessKey]
    Description: AWSSecretAccessKey of new user

Я проверил эту ссылку, но не уверен, как включить политику в мой текущий шаблон. https://aws.amazon.com/blogs/security/easier-way-to-control-access-to-aws-regions-using-iam-policies/

1 Ответ

1 голос
/ 05 мая 2019

Вы явно предоставляете вашему новому пользователю доступ к Cloudformation в вашем шаблоне.У вас есть этот раздел:

  CFNUserPolicies:
    Type: AWS::IAM::Policy
    Properties:
      PolicyName: CFNUsers
      PolicyDocument:
        Statement:
        - Effect: Allow
          Action: ['cloudformation:Describe*', 'cloudformation:List*', 'cloudformation:Get*']
          Resource: '*'
      Groups: [!Ref 'CFNUserGroup']
  CFNAdminPolicies:
    Type: AWS::IAM::Policy
    Properties:
      PolicyName: CFNAdmins
      PolicyDocument:
        Statement:
        - Effect: Allow
          Action: cloudformation:*
          Resource: '*'
Groups: [!Ref 'CFNAdminGroup']

, в котором ваши операторы разрешения специально предоставляют доступ к Cloudformation.Если вы пытаетесь предоставить доступ к s3, то почему вы предоставляете доступ к Cloudformation?

Если вы хотите, чтобы у пользователя был доступ только к s3, и если вы идете дальше на один конкретный сегмент s3, тогда ваша политика будет выглядеть примерно такэто (обратите внимание, что это в json):

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                        "s3:GetBucketLocation",
                        "s3:ListAllMyBuckets"
                      ],
            "Resource": "arn:aws:s3:::*"
        },
        {
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::YOUR-BUCKET",
                "arn:aws:s3:::YOUR-BUCKET/*"
            ]
        }
    ]
}

Если вы хотите, чтобы ваш пользователь имел доступ ко всем корзинам, тогда ваша политика будет выглядеть примерно так:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1557048549844",
      "Action": "s3:*",
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}

Смотрите этоИсточник: https://objectivefs.com/howto/how-to-restrict-s3-bucket-policy-to-only-one-aws-s3-bucket

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...