ヤマムギ

growing hard days.

*

kintoneでEveryoneに権限が設定されているアプリをAWS Lambdaで一括チェックする

   

こないだ、kintone Cafeでユーザーが自由に作成している環境だと、どんなアクセス権設定をしているのか見えないのが、ガバナンス的に課題ですな〜みたいな話をしてましたので、とりあえず簡易的にチェック出来るものをAWS Lambdaで作ってみました。

コードはこちらGithubです。

ランタイムはPython3.6です。

ドメインのアプリ一覧を取得

k/v1/apps.jsonでドメインのアプリ情報一覧を取得します。

Headerにはユーザー認証で

単体のアプリに対してのAPIではないので、APIトークンは使えないので、ユーザー認証を使います。

X-Cybozu-Authorizationにbase64エンコードした、「ユーザーID:パスワード」をセットします。

レスポンス

appsにアプリごとの情報が配列で最大100件返ります。

1度に100件なので

雑ですが、とりあえず10万アプリまで(タイムアウトするんじゃ。。。。)

なので、offsetで0件目から、100件目から,200件目からと順番に取得するようにしてます。

アプリごとに実処理をするLambdaに情報を渡す

実処理をするLambdaにappの情報を渡して非同期で実行しています。

実処理するLambdaでアプリのアクセス権を取得

/k/v1/app/acl.json?app=でアクセス権を取得します。

Headerは先ほどと同じユーザー認証です。

レスポンス

rightsの配列にアクセス権設定が返ります。

組織のポリシーにもよると思いますが、今回はデフォルトで設定されているEveryoneがそのままのアプリを抽出したいと思います。
(Everyoneが悪いというわけではありません。が、本当はアクセス権を限定したいアプリでEveryoneを外すのを忘れているケースもあるかなと思いまして)

詳細はコードを見ていただければと思いますが、
あとは、このレスポンスを辿って、recordViewableとか、recordEditableとかがTrueになっているかをチェックして、Slackに投稿します。

通知出来ました!

環境変数

ご参考にされる場合の環境変数を記載しておきます。

  • SLACK_URL : SLACKのWebhook URL
  • CHANNEL : SLACKのチャンネル
  • KINTONE_ID : kintoneの管理者ID
  • KINTONE_PASSWORD : kintoneの管理者パスワード
  • KINTONE_DOMAIN : kintoneのドメイン(xxx.cybozu.comまで全部)
  • LOG_LEVEL : INFOとかDEBUGとか
  • LAMBDA_NAME : アプリ一覧を取得する方のLambdaのみに設定、実処理をするLambdaの名前

最後までお読みいただきましてありがとうございました!

「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。

「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。

「AWS認定資格試験テキスト AWS認定AIプラクティショナー」という本を書きました。

「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。

「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。

「AWSではじめるLinux入門ガイド」という本を書きました。

 - AWS, kintone , , ,

  関連記事

CloudFormationで起動テンプレートのバージョン更新をした際にAuto ScalingのEC2インスタンスを置き換える

やりたいこと タイトルのとおり、起動テンプレートのバージョン変更(AMIの置換) …

IAMユーザーにパスワード変更とMFA設定を許可する

組織管理のIAMで、ユーザーにMFAを使ってサインインしない限り操作は許可しない …

EC2インスタンスの起動で、–cli-input-jsonと–cli-input-yamlを使いました

AWS CloudShellから実行しました。 JSON実行 [crayon-6 …

AWS Systems Managerパラメータストアで「Parameter name must be a fully qualified name.」

パラメータストアでパラメータ階層を作成しようとして、パラメータ名に例えば「wor …

Organizations組織でAWS SSOを有効にする

先日AWS Control Towerで環境を作ったら、自動でAWS SSOがで …

Amazon Elasticsearch ServiceにMySQLのデータを投入してkibanaで可視化してみる

MySQLのデータの可視化にAmazon Elasticsearch Servi …

Lambda関数をPython3.6から3.9に変更

CodeGuru ProfilerでLambda関数(Python 3.9)のパ …

「JAWS-UG in AWS Cloud Roadshow 2017 大阪」で運営をしました

AWS Cloud Roadshow 2017 大阪のナイトイベントで、「JAW …

Amazon Q Developer for CLIでAWS Diagram MCP Serverを使ってAWSアイコンを使った図を書いてもらいました

MacにインストールしているAmazon Q Developer for CLI …

YouTubeチャンネル「ヤマムギ」をはじめました

YouTubeチャンネル「ヤマムギ」をはじめました。 2021年GWチャレンジと …