【问题标题】:AWS Kinesis Firehose is not sending data to Elasticsearch....IAM permissions?AWS Kinesis Firehose 没有向 Elasticsearch 发送数据......IAM 权限?
【发布时间】:2020-10-01 18:28:16
【问题描述】:

所以除了最后一步,将数据从 Firehose 发送到 Elasticsearch 之外,我已经准备好了一切并且工作正常。

这是我在 Kinesis Firehose Elasticsearch 服务日志中遇到的错误:

Error received from Elasticsearch cluster. {"error":{"root_cause":[{"type":"security_exception","reason":"no permissions for [indices:data/write/bulk] and User [name=arn:aws:iam::917877325894:role/firehose_delivery_role, backend_roles=[arn:aws:iam::917877325894:role/firehose_delivery_role], requestedTenant=null]"}],"type":"security_exception","reason":"no permissions for [indices:data/write/bulk] and User [name=arn:aws:iam::917877325894:role/firehose_delivery_role, backend_roles=[arn:aws:iam::917877325894:role/firehose_delivery_role], requestedTenant=null]"},"status":403}

这是我附加的 IAM 政策(由 Firehose 自己制定)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "",
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeVpcs",
                "ec2:DescribeVpcAttribute",
                "ec2:DescribeSubnets",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeNetworkInterfaces",
                "ec2:CreateNetworkInterface",
                "ec2:CreateNetworkInterfacePermission",
                "ec2:DeleteNetworkInterface"
            ],
            "Resource": "*"
        },
        {
            "Sid": "",
            "Effect": "Allow",
            "Action": [
                "s3:AbortMultipartUpload",
                "s3:GetBucketLocation",
                "s3:GetObject",
                "s3:ListBucket",
                "s3:ListBucketMultipartUploads",
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::test-kinesis-backup-mydna",
                "arn:aws:s3:::test-kinesis-backup-mydna/*"
            ]
        },
        {
            "Sid": "",
            "Effect": "Allow",
            "Action": [
                "lambda:InvokeFunction",
                "lambda:GetFunctionConfiguration"
            ],
            "Resource": "arn:aws:lambda:us-west-2:917877325894:function:%FIREHOSE_DEFAULT_FUNCTION%:%FIREHOSE_DEFAULT_VERSION%"
        },
        {
            "Sid": "",
            "Effect": "Allow",
            "Action": [
                "es:DescribeElasticsearchDomain",
                "es:DescribeElasticsearchDomains",
                "es:DescribeElasticsearchDomainConfig",
                "es:ESHttpPost",
                "es:ESHttpPut"
            ],
            "Resource": [
                "arn:aws:es:us-west-2:917877325894:domain/test-dynamodb",
                "arn:aws:es:us-west-2:917877325894:domain/test-dynamodb/*"
            ]
        },
        {
            "Sid": "",
            "Effect": "Allow",
            "Action": [
                "es:ESHttpGet"
            ],
            "Resource": [
                "arn:aws:es:us-west-2:917877325894:domain/test-dynamodb/_all/_settings",
                "arn:aws:es:us-west-2:917877325894:domain/test-dynamodb/_cluster/stats",
                "arn:aws:es:us-west-2:917877325894:domain/test-dynamodb/test_dynamodb*/_mapping/",
                "arn:aws:es:us-west-2:917877325894:domain/test-dynamodb/_nodes",
                "arn:aws:es:us-west-2:917877325894:domain/test-dynamodb/_nodes/stats",
                "arn:aws:es:us-west-2:917877325894:domain/test-dynamodb/_nodes/*/stats",
                "arn:aws:es:us-west-2:917877325894:domain/test-dynamodb/_stats",
                "arn:aws:es:us-west-2:917877325894:domain/test-dynamodb/test_dynamodb*/_stats"
            ]
        },
        {
            "Sid": "",
            "Effect": "Allow",
            "Action": [
                "logs:PutLogEvents"
            ],
            "Resource": [
                "arn:aws:logs:us-west-2:917877325894:log-group:/aws/kinesisfirehose/test_dynamodb:log-stream:*"
            ]
        },
        {
            "Sid": "",
            "Effect": "Allow",
            "Action": [
                "kinesis:DescribeStream",
                "kinesis:GetShardIterator",
                "kinesis:GetRecords",
                "kinesis:ListShards"
            ],
            "Resource": "arn:aws:kinesis:us-west-2:917877325894:stream/%FIREHOSE_STREAM_NAME%"
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt"
            ],
            "Resource": [
                "arn:aws:kms:us-west-2:917877325894:key/%SSE_KEY_ID%"
            ],
            "Condition": {
                "StringEquals": {
                    "kms:ViaService": "kinesis.%REGION_NAME%.amazonaws.com"
                },
                "StringLike": {
                    "kms:EncryptionContext:aws:kinesis:arn": "arn:aws:kinesis:%REGION_NAME%:917877325894:stream/%FIREHOSE_STREAM_NAME%"
                }
            }
        }
    ]
}

我尝试添加所有不同的策略,但无法使其正常工作,并且我不断收到完全相同的错误消息。

有什么建议吗?

【问题讨论】:

  • IAM 策略附加到什么? ES 域还是某个角色?
  • 连接到 Kinesis Firehose
  • 你确定你的ES域名叫test-dynamodb吗?还有 ES 域的政策是什么?
  • @Marcin 是的,它被称为 test-dynamodb。并且策略是 { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "" ] }, "行动”:[“es:”],“资源”:“arn:aws:es:us-west-2:917877325894:domain/test-dynamodb2/*”}]}
  • 这个政策是自动生成的吗?通常对于es:,您将拥有es:*。原理类似。

标签: amazon-web-services amazon-iam amazon-kinesis amazon-kinesis-firehose amazon-elasticsearch


【解决方案1】:

我刚刚遇到了同样的问题。我的问题是我不小心将 firehose ARN 分配到 ES 角色映射,而不是 IAM ARN。

Elastic Search > Security > firehose_delivery_role > mapped users > backend role > {{ 这需要是 IAM firehose ARN,而不是 firehose ARN itselt }}

不正确:arn:aws:firehose:us-east-1:000000012345:deliverystream/workshop-firehose

正确:arn:aws:iam::000000012345:role/service-role/KinesisFirehoseServiceRole-workshop-fire-us-east-1-1609335111111

在发现错误之前,我还尝试将 [indices:data/write/bulk] 和 [indices:data/write/bulk*] 添加到 ES 角色的集群和索引权限中......但这并没有帮助。

希望这可以帮助其他遇到类似问题的人。

【讨论】:

    【解决方案2】:

    我也遇到了同样的问题。我使用 Cognito 身份验证设置 AWS 弹性搜索。将 firehose iam 角色 arn 添加到 ES 访问策略解决了该问题

    {
    "Version": "2012-10-17",
    "Statement": [
    {
      "Sid": "ESAccess",
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam::<accountID>:role/firehose-assume-role",
          "arn:aws:iam::<accountID>:role/cognito-auth-role"
        ]
      },
      "Action": "es:*",
      "Resource": [
        "arn:aws:es:<region>:<accountID>:domain/es-domain/*",
        "arn:aws:es:<region>:<accountID>:domain/es-domain"
      ]
      }
     ]
    }
    

    【讨论】:

      猜你喜欢
      • 2020-10-02
      • 2017-05-24
      • 2020-12-29
      • 2021-09-27
      • 2020-07-14
      • 1970-01-01
      • 2016-11-13
      • 2019-09-29
      • 2016-12-05
      相关资源
      最近更新 更多