Добавление политики доступа к нескольким доменам в сервис AWS Elasticsearch (статический IP и лямбда-ARN)
После настройки AWS Elasticsearch я установил прокси-серверы Logstash и Kibana на статическом IP-сервере, добавил политику доступа к домену в ES, и она работает нормально:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "es:*",
"Resource": "arn:aws:es:ap-southeast-1:323137313233:domain/sg-es-logs/*",
"Condition": {
"IpAddress": {
"aws:SourceIp": [
"192.192.192.192"
]
}
}
}
]
}
Теперь мне нужно разрешить выполнение лямбда-функции es:ESHttpDelete
действие на AWS ES, поэтому я создал функцию с существующей ролью service-role/Elasticsearch
затем скопировал ARN
из консоли управления IAM, чтобы добавить его в политику доступа AWS ES, для этого:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam:: 323137313233:role/service-role/Elasticsearch"
]
},
"Action": [
"es:*"
],
"Resource": "arn:aws:es:ap-southeast-1:323137313233:domain/sg-es-logs/*"
}
]
}
Проблема в ES. Я должен выбрать политику доступа к домену для статического IP или ARN, но не для обоих. Когда я попытался объединить их вручную, не используя консоль, это не сработало. Я проверил документацию AWS, но они не упомянули, возможно ли это или нет.
1 ответ
Вы можете добавить несколько политик Statement
массив в формате JSON политики. Итак, ваша окончательная политика будет выглядеть примерно так:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "es:*",
"Resource": "arn:aws:es:ap-southeast-1:323137313233:domain/sg-es-logs/*",
"Condition": {
"IpAddress": {
"aws:SourceIp": [
"192.192.192.192"
]
}
}
},
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam:: 323137313233:role/service-role/Elasticsearch"
]
},
"Action": [
"es:*"
],
"Resource": "arn:aws:es:ap-southeast-1:323137313233:domain/sg-es-logs/*"
}
]
}