LoginSignup
0
0

More than 3 years have passed since last update.

【GAS】監査ログの取得(外部ドメインへの転送設定有効化を検知)

Posted at

やりたいこと

  • Gmailの転送設定で外部ドメインへの転送を有効化したアカウントをSlackに通知させたい。
  • 情報漏洩やうっかり外部ドメインへの転送設定を検知、早期に対処するため。
  • 監査ログのチェックは1日毎で行う。
  • 監査ログのイベント名で「email_forwarding_out_of_domain」に一致したもののみSlackに通知する。

事前準備

Admin SDKのReportsを使うためにはサービスを追加しておく必要がある。

サービス > Admin SDK API の順に選択
バージョンは「reports_v1」、IDに「AdminReports」を入力して追加
image.png

コード

sample.gs
var slackWebhookUrl = 'Slack Webhook URL';

function AuditLog() {

  var now = new Date();

  var oneDayAgo = new Date(now.getTime() - 1 * 24 * 60 * 60 * 1000); 

  var startTime = oneDayAgo.toISOString();

  var endTime = now.toISOString();

  var page;

  page = AdminReports.Activities.list('all', 'user_accounts', {
      startTime: startTime,
      endTime: endTime,
      maxResults: 5,
      pageToken: pageToken
    });//page = AdminReports.Activities.list('all', 'user_accounts', {

  var items = page.items;

  if (items){

    for (var i = 0; i < items.length; i++){

      var item = items[i];

      if (item.events[0].name == "email_forwarding_out_of_domain"){

        var text = "Gmailの転送設定有効化を検知しました。 " + item.id.time + " " + item.actor.email + " " + item.events[0].name + " " + item.events[0].parameters;
        postSlack(text);
      }//if (item.events[0].name == "email_forwarding_out_of_domain"){

    }//for (var i = 0; i < items.length; i++){

  }//if (items){

}//function AuditLog() {

function postSlack(text){
  var data = {
    "text": text
  }//var data = {
  var options = {
    'method' : 'post',
    'contentType': 'application/json',
    'payload' : JSON.stringify(data)
  };//var options = {

  Logger.log(options);
  UrlFetchApp.fetch(slackWebhookUrl, options);
}//function postSlack(text){
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0