que pricing precio elk aws aplicaciones amazon-web-services elasticsearch amazon-ec2 amazon-iam amazon-elasticsearch

amazon-web-services - pricing - elasticsearch precio



PolĂ­tica de acceso adecuada para Amazon Elastic Search Cluster (5)

Recientemente comencé a usar el nuevo servicio Amazon Elasticsearch y parece que no puedo entender la política de acceso que necesito, de modo que solo puedo acceder a los servicios desde mis instancias EC2 que tienen asignada una función específica de IAM.

Aquí hay un ejemplo de la política de acceso que actualmente he asignado para el dominio ES:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::[ACCOUNT_ID]:role/my_es_role", ] }, "Action": "es:*", "Resource": "arn:aws:es:us-east-1:[ACCOUNT_ID]:domain/[ES_DOMAIN]/*" } ] }

Pero como dije, esto no funciona. Me conecto a la instancia EC2 (que tiene el rol my_es_role asociado) e intento ejecutar una llamada curl simple en el punto final "https: //*.es.amazonaws.com", aparece el siguiente error:

{"Mensaje": "Usuario: anónimo no está autorizado para realizar: es: ESHttp Obtenga el recurso: arn: aws: es: us-east-1: [ACCOUNT_ID]: dominio / [ES_DOMAIN] /“}

¿Alguien sabe lo que tengo que cambiar en la política de acceso para que esto funcione?


De acuerdo con el documento de AWS y como usted (y yo) acabamos de probar, no puede restringir el acceso a un dominio de AWS ES a un rol / cuenta / usuario / ... ¡y simplemente eliminarlo!

Los clientes estándar, como curl, no pueden realizar la firma de solicitud que se requiere de las políticas de acceso basadas en identidad. Debe usar una política de acceso basada en la dirección IP que permita el acceso anónimo para realizar con éxito las instrucciones de este paso. ( http://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-gsg-search.html )

Entonces tienes básicamente dos soluciones:

Firmar su solicitud es probablemente la mejor solución si desea mantener su política de acceso como está (que es más flexible que restringir a una IP), pero parece ser un poco más complejo. No lo he intentado hasta ahora y no puedo encontrar ningún documento para ayudar.


Llegué un poco tarde a la fiesta, pero pude lidiar exactamente con el mismo problema agregando firma a mis solicitudes.

Si usa Python (como yo), puede usar la siguiente biblioteca para que sea particularmente fácil de implementar: https://github.com/DavidMuller/aws-requests-auth

Funcionó perfectamente para mí.


Puede bloquear el acceso solo a IAM, pero ¿cómo verá Kibana en su navegador? Puede configurar un proxy ( consulte el módulo Gist y / o NPM ) o habilitar tanto el acceso basado en IP como IAM para ver los resultados.

Pude obtener acceso restringido a IP de IAM con la siguiente Política de acceso. Tenga en cuenta que el orden es importante: no pude hacerlo funcionar con la declaración basada en IP antes de la declaración IAM.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::xxxxxxxxxxxx:root" }, "Action": "es:*", "Resource": "arn:aws:es:us-west-2:xxxxxxxxxxxx:domain/my-elasticsearch-domain/*" }, { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "es:*", "Resource": "arn:aws:es:us-west-2:xxxxxxxxxxxx:domain/my-elasticsearch-domain/*", "Condition": { "IpAddress": { "aws:SourceIp": [ "192.168.1.0", "192.168.1.1" ] } } } ] }

Mi instancia EC2 tiene un perfil de instancia con la arn:aws:iam::aws:policy/AmazonESFullAccess . Logstash debe firmar las solicitudes utilizando el complemento de salida logstash-output-amazon-es . Logstash que se ejecuta en mi instancia EC2 incluye una sección de salida como esta:

output { amazon_es { hosts => ["ELASTICSEARCH_HOST"] region => "AWS_REGION" } # If you need to do some testing & debugging, uncomment this line: # stdout { codec => rubydebug } }

Puedo acceder a Kibana desde las dos IP en la política de acceso (192.168.1.0 y 192.168.1.1).



También estoy tratando de hacer esto, y lo hice funcionar usando la opción Allow access to the domain from specific IP(s) con la IP elástica de mi instancia EC2 (también podría funcionar usando la IP privada de la instancia, pero estoy no estoy muy seguro)