AWSSecurityTokenServiceException: отказано в доступе.Пользователь не авторизован для выполнения sts: AssumeRole - PullRequest
0 голосов
/ 05 июня 2018

Я новичок в AWS.Я хочу создать временные учетные данные для вызова AWS.И для этого я использую пример из Выполнение запросов с использованием временных учетных данных пользователя IAM - AWS SDK для Java

Где я передаю

String clientRegion = "<specific region>";
String roleARN = "<ARN from role>";
String roleSessionName = "Just random string"; //<-- maybe I should pass specific SessionName?
String bucketName = "<specific bucket name>";

И при попытке принять роль

stsClient.assumeRole(roleRequest);

получить ошибку

com.amazonaws.services.securitytoken.model.AWSSecurityTokenServiceException: Пользователь: arn: aws: iam ::: пользователь / не авторизован для выполнения:

sts:AssumeRole on resource: arn:aws:iam::<ID>:role/<ROLE_NAME> (Service: AWSSecurityTokenService; Status Code: 403; Error Code:

AccessDenied;Идентификатор запроса:)

У меня есть роль cognito .Я думаю, что проблема в Роль доверительных отношений Настройки.Это выглядит следующим образом:

    {
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::<iam user ID>:user/<USER_NAME>",
        "Federated": "cognito-identity.amazonaws.com"
      },
      "Action": "sts:AssumeRoleWithWebIdentity",
      "Condition": {
        "StringEquals": {
          "cognito-identity.amazonaws.com:aud": "<user pool ID>"
        },
        "ForAnyValue:StringLike": {
          "cognito-identity.amazonaws.com:amr": "authenticated"
        }
      }
    }
  ]
}

и политика пользователя (эта политика пользователя прикреплена к этой роли также):

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "<sidId1>",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:PutObjectAcl"
            ],
            "Resource": [
                "arn:aws:s3:::<path>*"
            ]
        },
        {
            "Sid": "sidId2",
            "Effect": "Allow",
            "Action": [
                "sts:AssumeRole",
                "sts:AssumeRoleWithWebIdentity"
            ],
            "Resource": [
                "arn:aws:iam::<ID>:role/<ROLE_NAME>"
            ]
        }
    ]
}

Политика пользователя содержит два предупреждения:

enter image description here Что я делаю не так?

UPD Я изменил роль Доверительные отношения , просто удалите Условие :

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Federated": "cognito-identity.amazonaws.com",
        "AWS": "arn:aws:iam::<ID>:user/<USER>"
      },
      "Action": [
        "sts:AssumeRole",
        "sts:AssumeRoleWithWebIdentity"
      ]
    }
  ]
}

и теперь Доступ запрещен Произошла ошибка в другой строке кода:

  // Verify that assuming the role worked and the permissions are set correctly
  // by getting a set of object keys from the bucket.
  ObjectListing objects = s3Client.listObjects(bucketName);

Полученосообщение об ошибке: com.amazonaws.services.s3.model.AmazonS3Exception: доступ запрещен (услуга: Amazon S3; код состояния: 403; код ошибки: AccessDenied; идентификатор запроса:), расширенный идентификатор запроса S3:

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