Почему в этой политике IAM есть синтаксическая ошибка? - PullRequest
1 голос
/ 28 апреля 2020

Я новичок в / изучая AWS, в настоящее время использую LocalStack вместо реального живого AWS.

arn:aws:s3:::my-bucket/path/to/foo.json - действительный ключ S3 для объекта в недавно созданное S3 ведро. Поскольку корзина только что создана и нетронута, кроме загрузки одного файла, ничто в ней не доступно извне. Я пытаюсь узнать о IAM, работая с примерами, чтобы создать политику, предоставляющую доступ на чтение к частям корзины S3.

Я создал следующий файл политики на основе this пример из справки CLI AWS:

$ cat ./policy
{
  "Version": "2020-04-27",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
          "s3:Get*",
          "s3:List*"
      ],
      "Resource": [
          "arn:aws:s3:::my-bucket/path/to/foo.json"
      ]
    }
  ]
}

Из того же связанного примера я попытался создать свою политику с помощью этой команды, которая завершилась неудачно:

$ aws --endpoint-url=http://localhost:4593 iam create-policy --policy-name my-bucket-policy --policy-document file://policy

An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: Syntax errors in policy.

Почему эта команда завершилась неудачно или есть способ получить более описательное сообщение об ошибке?

(policy - это файл в cwd, где я выполняю aws Команда CLI)

Насколько я понимаю, в сообщении об ошибке указывается неверное значение JSON, но такие символы, как https://jsonlint.com/, указывают, что текст действителен JSON. Более того, изменения из исходного примера минимальны и могут показаться разумными: "Version" заменено на сегодняшнюю дату, а "Resource" ARN заменено на то, что относится ко мне.

1 Ответ

2 голосов
/ 28 апреля 2020

Указана неверная версия. Должно быть: "2012-10-17"

Редактировать: Ошибка с принципом. Смотрите комментарии. Принцип требуется для политик на основе ресурсов:

Принципал (требуется только при некоторых обстоятельствах) - если вы создаете политику на основе ресурсов , вы должен указывать учетную запись, пользователя, роль или федеративного пользователя, которому вы хотите разрешить или запретить доступ. Если вы создаете политику разрешений IAM для присоединения к пользователю или роли, вы не можете включить этот элемент. Принципал подразумевается как этот пользователь или роль.

...