【问题标题】:Google Cloud - creating sink谷歌云 - 创建接收器
【发布时间】:2020-09-08 03:05:00
【问题描述】:

我正在尝试使用云外壳中的接收器将日志导出到 bigquery。 我做了以下步骤: bq mk 数据集

gcloud beta 日志接收器创建 my-bq-sink \ bigquery.googleapis.com/projects/my-project/datasets/\ my_dataset --log-filter='resource.type="gce_instance"'

我为接收器创建了一个服务帐户并将他绑定到 bigQuery.dataEditor 和 logging.logWriter

问题是,如果我不去控制台-> 编辑接收器-> 更新接收器我得到我对数据集的访问被拒绝。我如何从 Cloud Shell 解决这个问题?

【问题讨论】:

    标签: google-cloud-platform google-bigquery sink


    【解决方案1】:

    与许多产品一样,创建服务与 IAM 授权是分开的。对于日志接收器,Google 的“奇怪”决定是由日志服务生成一个服务帐户,并在命令结果中向您发送该服务帐户的名称

    Created [https://logging.googleapis.com/v2/projects/My_PROJECT/sinks/test].
    Please remember to grant `serviceAccount:p78401601954-957849@gcp-sa-logging.iam.gserviceaccount.com` the BigQuery Data Editor role on the dataset.
    More information about sinks can be found at https://cloud.google.com/logging/docs/export/configure_export
    

    如果您想编写脚本,则不是很有用。所以,将参数--format=json添加到sink创建命令中,结果如下

    {
      "createTime": "2020-05-21T19:27:36.599050569Z",
      "destination": "bigquery.googleapis.com/projects/My_PROJECT/datasets/asset_eu",
      "filter": "resource.type=cloud_function",
      "name": "test",
      "updateTime": "2020-05-21T19:27:36.599050569Z",
      "writerIdentity": "serviceAccount:p78401601954-465055@gcp-sa-logging.iam.gserviceaccount.com"
    }
    

    现在您可以获得writerIdentity 并授予您需要的角色。但是,我再说一遍,这种选择对 Google 来说很奇怪(并且与其他产品不一致),我不会对这种行为在未来发生变化感到惊讶。

    【讨论】:

    • 我使用接收器描述来获取 writerIdentity,并创建了一个具有 biqeury 权限和日志写入权限的 SA。问题是它只有在我进入 GCP 控制台并点击 UPDATE SINK 后才能工作
    • “我创建了 SA”是什么意思?您不必创建它,只需授予您想要的角色。
    • 我使用唯一的作者身份创建了一个新的服务帐户(在 IAM 下)。我应该只授予以下权限:p78401601954-465055@gcp-sa-logging.iam.gserviceaccount.com?
    • 是的!您只需在创建接收器后授予所提供服务帐户的权限!没有可创建的服务帐号
    猜你喜欢
    • 2019-02-12
    • 1970-01-01
    • 2021-04-07
    • 2016-01-31
    • 1970-01-01
    • 2019-09-30
    • 1970-01-01
    • 2018-06-14
    • 2021-06-14
    相关资源
    最近更新 更多