#amazon-web-services #amazon-iam
Вопрос:
Я пытаюсь использовать ABAC( Управление доступом на основе атрибутов) в своем приложении. В AWS объект S3 имеет тег, ключ-пользовательский:kypha, а значение — «привет». Пользовательский токен имеет тот же пользовательский атрибут:kypha, но он имеет значение «привет-привет-добро пожаловать», Теперь я хочу, чтобы значение ключа тега объекта S3 совпадало с этой парой ключ-значение атрибута пользовательского токена, потому что в его значении «привет».
Для достижения этой цели я написал политику IAM
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "s3:GetObject*",
"Resource": "arn:aws:s3:::*",
"Condition": {
"StringLike": {
"s3:ExistingObjectTag/custom:kypha": "${aws:PrincipalTag/custom:kypha}"
}
}
}
]
}
и вслед за этим: https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html что говорит о подстановочном знаке
Струноподобный
Сопоставление с учетом регистра. Значения могут включать подстановочный знак для сопоставления нескольких символов (*) и подстановочный знак для сопоставления одного символа (?) в любом месте строки.
Основываясь на предложении в комментарии. Ниже приведены примеры для разъяснения, которые проясняют мои требования:
В S3 у меня есть файл pharma.csv, в котором есть тег: Ключ-пользовательский:Значение kypha-привет
Теперь пользователь (из Cognito) хочет получить доступ к этому файлу, у которого есть атрибуты в маркере — custom:kypha=’привет-привет-добро пожаловать’
Пользователь должен иметь доступ к файлу, так как в нем есть «привет» в «привет-привет-добро пожаловать». Но моя вышеприведенная политика здесь не работает. В нем говорится, что Доступ Запрещен.
Примечание: Я использую ABAC: https://www.youtube.com/watch?v=tAUmz94O2Qoamp;t=280s
Если я скажу то же самое в SQL, я хочу этого: ВЫБЕРИТЕ * ИЗ клиентов, ГДЕ имя пользователя, НАПРИМЕР » %или%»;
Комментарии:
1. Можете ли вы объяснить, что
"?/${aws:PrincipalTag/custom:kypha}/?"
, по-вашему, делает? Или что вы хотите, чтобы он делал?2. Я использую это»?», чтобы посмотреть, соответствует ли значение токена значению ключа тега объекта s3 или нет. Позвольте мне отредактировать его, если это вызывает путаницу.
3.
?
предназначен только для совпадения одного символа, напримерaabb?cc
, машеaabb-cc
илиaabb_cc
. Не очень понятно, чего вы пытаетесь достичь. Может быть, вы можете привести примеры совпадений и несоответствий?4. @Marcin Я добавил больше информации к своему вопросу.
5.
?
предназначен только для одного символа. Для чего-то похожего на SQL вам придется использовать*
,например.*hello*
…