如何配置谷歌工作空间警报中心发布警报到PubSub主题?



我正在构建一个通知系统,当员工采取触发DLP规则的操作时,该系统将通知闲置的员工。

我想要得到的理想流是:

员工采取行动>规则触发>警报被发布到PubSub主题>触发Cloud函数,该函数呈现slack消息并将其发送给用户。

我卡住的地方是让API警报中心将警报发布到PubSub主题。我在过去用Gmail API做过类似的事情,当一个特定的帐户收到电子邮件时,将其发布到主题。并且有一个watch请求来配置帐户以发布到主题。

我浏览了Alert Center API文档,并没有找到一个手表请求或任何类似的东西。

有办法做到这一点吗?或者这是不可能的?

我通过Google Alert Center API参考和Alert Center控制台搜索任何配置发布到pubsub主题或webhook的选项。

经过几个小时的反复试验,我找到了解决办法。

我们必须通过make和updatessetting来更新设置,并在body中发送一个settings对象。

下面是一些python代码,使用具有域范围委托的服务帐户:

from google.oauth2 import service_account
from googleapiclient.discovery import build
import json
def main():
# Authenticate the service account
scopes = ['https://www.googleapis.com/auth/apps.alerts']
admin_to_impersonate = '******'
credentials = service_account.Credentials.from_service_account_file(
'client_secrets.json', scopes=scopes, subject=admin_to_impersonate
)

# Build the service
service = build('alertcenter', 'v1beta1', credentials=credentials)
settings = {
'notifications': [
{
'cloudPubsubTopic': {
'topicName': '<YOUR TOPIC NAME>',
'payloadFormat': 'JSON'
}
}
]
}
# Execute a updateSetting request
response = service.v1beta1().updateSettings(body=settings).execute()
print(response)
if __name__ == '__main__':
main()

谢谢Andre,你的方法对我很有效。

对于那些希望部署在云功能或其他任何地方调用服务帐户密钥('client_secrets.json')不够安全的人来说,我是这样做的:

首先参考并遵循https://github.com/GoogleCloudPlatform/professional-services/blob/e79c75a14eb20640afbcab3ee110eccdd8378720/examples/gce-to-adminsdk/README.md中的所有步骤。忽略关于admin组读权限的部分,而是创建一个具有Alert Center的所有访问权限的自定义admin角色,并将其分配给虚拟用户帐户。

确保您的VPC子网已启用私有谷歌访问(或至少有一些连接到警报中心端点。)我只允许云功能中的内部流量,并使用同一子网中的计算实例进行测试,以卷曲它。

最后,无论出于何种原因,from googleapiclient.discovery import build导致了Cloud Functions中的部署错误。您可以使用from googleapiclient import discovery,将build()更改为discovery.build()

最新更新