目次

Admina Custom Service Actionのセットアップと使い方

Katsutoshi Murakami 更新 by Katsutoshi Murakami

「Admina Custom Service Action」を利用したIdPアプリのAdminaへの同期

この記事ではAdminaの利用を支援する外部ツール「Admina Custom Service Action」を利用したIdPアプリのAdminaへの同期方法をご紹介します。

バージョン
GitHubのリリースノートを参照して下さい。

 

概要説明と前提

このツールは以下のスタックと権限で構成されています。これらが利用できる環境、アカウントを持っていることを前提としています。

スタック

権限

GitHub Actions

GitHub ActionへのWrite権限が必要です。

Data Source ( EntraID)

Data Sourceとなるサービスの管理者権限相当が必要な場合があります。

Admina

Adminaの管理者権限が必要です。

処理の全体像は以下のとおりです。

登場するコンポーネントは以下のとおりです。

コンポーネント

説明

Github Action

GitHub ActionをCronとして利用し、定期的にデータの同期をおこないます。GitHubでOSSとして公開しています。

https://github.com/moneyforward-i/admina-custom-service-action

Data Source ( EntraID ) API

データソースとなるサービスです。

Admina API

Admina製品です。APIを利用してカスタムアプリの登録を行います。

 

概要

admina-custom-service-action というGitHub Action(実行スクリプト)を自社のGitHub環境で呼び出すことで、AzureADやOkta, KintoneのデータベースにあるデータをAdminaに自動登録&更新することが出来ます。

Adminaには "Single Sign-On" というサービス名で登録されます。各アプリはワークスペースとして登録されます。

 

導入方法

Admina APIキーの取得

Adminaの左メニュー「設定」 > APIキー一覧 > 「+APIキーを作成する」から新しいキーを作成してください。名前にはAPIキーを利用するGitHub RepositoryのURLなどを入れると便利です。

 

Data SourceのAPIキーの取得

EntraIDの場合
Admina連携用に専用アプリを作り、クレデンシャルの作成と、権限の設定をおこないます。
  1. アプリケーションの作成を開始します。

AzureADのコンソールで、 "App registrations" を選択します。"New registration" ボタンを押してアプリの作成フローに入ります。

  • Name: Admina Connecter for Admina Custom App Service Action
  • Supported account types: Accounts in this organizational directory only (i.moneyforward.com only - Single tenant) を選択。
  • Redirect URI: 空白のまま
  1. アプリケーションに権限を追加します。
    左メニューの API permissionsを開き、"Add a permission" ボタンでサイドペーンを開いたら "Microsoft Graph" APIを選びます。
    次の画面で、Permission Typeは "Application permissions" を選びます。
  2. 以下の権限を全て追加します。その後 "Grant admin content for (( your tenant name ))" のボタンを押下して、作成したアプリケーションを組織のテナントにインストールします。
  3. Credentialを作ります
  • Description: Admina Connecter for Admina Custom App Service Action
  • Expires: 任意の期間を指定します。

作成したら画面に表示される "Value" のフィールドの値を、後続で使用する以下の変数の値として手元に保管しておきます。

ADMINA_SYNC_SAMLAPPS_TASK_MS_CLIENT_SECRET

Client IDとTenant IDを取得する。

"Overview" のページから以下の値を、後続で使用する以下の変数の値としてそれぞれコピーして手元に保管しておきます。

ADMINA_SYNC_SAMLAPPS_TASK_MS_CLIENT_ID
ADMINA_SYNC_SAMLAPPS_TASK_MS_TENANT_ID

  1. ( オプション ) アイコンを設定する場合、”Enterprise Application”のページに移動し、インストールしたこのアプリの "Properties" のページでLogoの設定が可能です。( 以下は、サンプル画像です。 )

 

GitHub Actionの設定

以下のようなファイルを配置します。( .github/workflow/admina-custom-app-sync.yaml )

# Admina Sync Saml Apps
# This GitHub Actions workflow runs a Node.js script that synchronizes Single Sign-On applications and users between Source to Admina. The workflow can be triggered manually or by a cron schedule.

name: Admina Sync Custom Apps

# Schedule a workflow run every hour between 00:00 AM and 12:00 PM UTC (9:00 AM to 9:00 PM JST) and 4:00 PM UTC (1:00 AM JST) from Monday to Friday, excluding weekends
on:
workflow_dispatch:
schedule:
- cron: "0 0-12,16 * * 1-5" # JST: AM9:00-PM9:00, AM1:00

jobs:
AzureAD-Saml-App-Sync:
name: AzureAD SSO Apps Sync
runs-on: ubuntu-latest
steps:
- name: Sync
uses: moneyforward-i/admina-custom-service-action@v1.0.0
with:
subcommand: "sync"
source: "AzureAd"
destination: "Admina"
admina_org_id: ${{ secrets.ADMINA_SYNC_SAMLAPPS_TASK_ADMINA_ORG_ID }}
admina_api_token: ${{ secrets.ADMINA_SYNC_SAMLAPPS_TASK_ADMINA_API_TOKEN }}
ms_client_id: ${{ secrets.ADMINA_SYNC_SAMLAPPS_TASK_MS_CLIENT_ID }}
ms_tenant_id: ${{ secrets.ADMINA_SYNC_SAMLAPPS_TASK_MS_TENANT_ID }}
ms_client_secret: ${{ secrets.ADMINA_SYNC_SAMLAPPS_TASK_MS_CLIENT_SECRET }}

同期対象を特定のサービスに限定したい場合、次のようにtarget_services:を追記して指定ください。
   (中略)
with:
subcommand: "sync"
source: "AzureAd"
destination: "Admina"
admina_org_id: ${{ secrets.ADMINA_SYNC_SAMLAPPS_TASK_ADMINA_ORG_ID }}
admina_api_token: ${{ secrets.ADMINA_SYNC_SAMLAPPS_TASK_ADMINA_API_TOKEN }}
ms_client_id: ${{ secrets.ADMINA_SYNC_SAMLAPPS_TASK_MS_CLIENT_ID }}
ms_tenant_id: ${{ secrets.ADMINA_SYNC_SAMLAPPS_TASK_MS_TENANT_ID }}
ms_client_secret: ${{ secrets.ADMINA_SYNC_SAMLAPPS_TASK_MS_CLIENT_SECRET }}
target_services: 'Amazon Web Service, SmartHR'

クレデンシャルをリポジトリーに設定します。

 

より具体的な利用ケース

  • 社内用の管理ツールやサービスのログインをIdPで管理している場合に同期によってアカウントの把握が簡単になります。またこれらのツールの監査も行いやすくなります。
  • SSO連携すると、Adminaと連携できないタイプのアプリもこれによって定期的に同期させることができます。

 

できないこと

  • Admina側からIdP側に何かのアクションを実行することは現状できません。

この記事はお役に立ちましたでしょうか?

お問い合わせ