Программный доступ к политике пользователей AWS IAM и доступ - PullRequest
0 голосов
/ 04 июля 2019

У меня есть приложение, которое использует AWS SDK iOS 2.9.10 для входа пользователя AWS IAM в свою учетную запись AWS S3.Я хотел бы иметь возможность оценить, имеет ли пользователь доступ для чтения / записи к различным сегментам S3 под учетной записью.В основном, я хотел бы программно сделать это:

aws iam list-user-policies --user-name IAM_User_Name

aws iam get-user-policy --user-name IAM_User_Name --policy-name IAM_Policy_Name

Используя эти выходные данные, чтобы узнать, к какой корзине S3 какой пользователь IAM имеет доступ, яЗатем можно проверить поле «Действие» в политике IAM, если оно разрешает такие права, как «s3: GetObject» или «s3: », а поле ресурса содержит значение как «arn: aws: s3 ::: examplebucket / ».или же "*".Если оба варианта применимы, то у пользователя IAM есть разрешение на S3 "examplebucket".

Однако я не могу понять, возможен ли программный доступ к IAM с помощью AWS SDK iOS (Swift или Objective-C), поэтому любая помощь будет очень полезна.

1 Ответ

1 голос
/ 05 июля 2019

Я думаю, что эта функция не предоставляется в AWS SDK iOS, так как существует открытая проблема на GitHub, которая была закрыта без ответа. [1]

Вместо этого вы можете запросить службу напрямую, используя так называемый IAM Query API [2].
AWS заявляет, что:

AWS предоставляет SDK, которые состоят из библиотек и примеров кода для различных языков программирования и платформ (Java, Ruby, .NET, iOS, Android и т. Д.). SDK предоставляют удобный способ создания программного доступа к IAM и AWS. Например, SDK заботятся о таких задачах, как криптографическая подпись запросов (см. Ниже), управление ошибками и повторная попытка запросов. Информацию о пакетах SDK AWS, в том числе о том, как их загрузить и установить, см. На странице «Инструменты для веб-служб Amazon».

К сожалению, iOS SDK официально не поддерживается службой IAM. Вот почему конечные точки службы IAM не включены в iOS SDK. Вы можете попытаться открыть другой запрос на функцию на GitHub, хотя ...

Если вы решите внедрить клиент HTTP и правильно подписать запрос вручную, вы можете использовать команды IAM, которые вы упомянули выше (в терминах AWS, называемых «Действия»), например, действие ListUserPolicies [3].

Предложение по улучшению

Затем я мог бы проверить поле «Действие» в политике IAM, если оно разрешает такие права, как «s3: GetObject» или «s3:», а поле ресурса содержит значение как «arn: aws: s3 ::: examplebucket /» или « *». Если оба варианта применимы, то пользователь IAM имеет разрешение на S3 "examplebucket".

Если вам нужен более надежный подход, я бы предложил использовать API-интерфейс IAM Policy Simulator . [4]

Ссылки

[1] https://github.com/aws-amplify/aws-sdk-ios/issues/496
[2] https://docs.aws.amazon.com/IAM/latest/APIReference/Welcome.html
[3] https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListUserPolicies.html
[4] https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_testing-policies.html#policies-simulator-using-api

...