Интеграция с AWS Cognito и AWS S3? - PullRequest
0 голосов
/ 22 октября 2018

Можно ли ограничить объекты AWS S3 так, чтобы только пользователи, прошедшие аутентификацию через AWS Cognito, получили доступ к объекту?Я не нашел способ сделать это, но мне кажется очевидным, что это будет вариант использования.

Я хочу разместить сайт через AWS S3 и ограничить некоторые объекты (мои страницы), чтобычто если пользователь будет обращаться к ним напрямую, он получит ошибку отказа в разрешении.Если пользователь прошел аутентификацию через AWS Cognito, объект должен быть доступен.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Deny access to objects in the secured directory.",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::domain.com/secured/*"
        },
        {
            "Sid": "Only allowed authenticated users access to a specific bucket.",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::x:role/Cognito_Domain_IdP_Auth_Role"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::domain.com/secured/*"
        },
        {
            "Sid": "Read access for web hosting.",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::domain.com/*"
        }
    ]
}

Ответы [ 2 ]

0 голосов
/ 28 июля 2019

Да, вы можете добиться этого, но для этого вы не можете добиться этого, напрямую конфигурируя через консоль

→ Сначала вам нужно создать политику с ограниченным доступом к Cognito и S3 bucket

→ Создать роль, присоединяющую их

→ Назначить их вашему EC2 или Lambda

→ Аутентифицировать пользователя в вашем приложении с помощью Cognito

→ Используя это, вы можете иметьподписанный URL-адрес для объекта S3 и получение их

Это может помочь вам

0 голосов
/ 16 декабря 2018

Вы можете передать роль пользователям, прошедшим проверку подлинности с помощью cognito, а затем разрешить им определенные действия.

Создание ролей для сопоставления ролей

Важно добавитьсоответствующая политика доверия для каждой роли, чтобы Amazon Cognito могла принимать ее только для аутентифицированных пользователей в вашем пуле удостоверений.Вот пример такой политики доверия:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Federated": "cognito-identity.amazonaws.com"
      },
      "Action": "sts:AssumeRoleWithWebIdentity",
      "Condition": {
        "StringEquals": {
          "cognito-identity.amazonaws.com:aud": "us-east-1:12345678-dead-beef-cafe-123456790ab"
        },
        "ForAnyValue:StringLike": {
          "cognito-identity.amazonaws.com:amr": "authenticated"
        }
      }
    }
  ]
}

Предоставление разрешения роли прохода

Чтобы разрешить пользователю IAM устанавливать роли с разрешениями, превышающими права пользователясуществующие разрешения для пула удостоверений, вы предоставляете этому пользователю разрешение iam: PassRole для передачи роли в API set-identity-pool-role.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1",
            "Effect": "Allow",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": [
                "arn:aws:iam::123456789012:role/myS3WriteAccessRole"
            ]
        }
    ]
}

Дополнительная информация здесь: https://docs.aws.amazon.com/cognito/latest/developerguide/role-based-access-control.html

...