[レポート] DevOpsプラクティスをAuth0 Int環境に適応する方法 #Auth0JP #Auth0Day

2019年11月19日(火)にAuth0社の自社イベント「Auth0 Day 2019」が開催されました。本記事ではセッション「DevOpsプラクティスをAuth0 Int環境に適応する方法」をレポートします。
2019.11.19

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

DevOpsプラクティスをAuth0 Int環境に適応する方法

2019年11月19日(火)にNagatacho GRiDでAuth0社の自社イベント「Auth0 Day 2019」が開催されました。

本記事は、セッション「DevOpsプラクティスをAuth0 Int環境に適応する方法」をレポートします。

スピーカー

  • 山口央 [Auth0株式会社 Solutions Engineer]

セッション概要

あらゆるモノがソフトウェアで定義される昨今、 迅速・安全かつ自動的なソフトウェアのリリースは全てのお客様に必要です。 ソフトウェア開発者は、新しい機能をいち早く市場に投入したい要望を 持っているにもかかわらず、自動的なソフトウェアのリリースの最低条件である"as Code"化を全てのスタックで実現することは困難で、 CI/CDツールで管理できない一部のスタックは 人手でリリースされているのが実情です。 本セッションでは、DevOpsプラクティスをID管理スタックに適応して 完全な自動化と継続的なソフトウェアリリースを実現する方法を デモを交えてご紹介します。

レポート

アジェンダ

  • DevOpsとCI/CDツール
  • Auth0のアプローチ
  • DevOpsをAuth0環境に適応する方法
  • デモ

CI/CDの必要性

  • ソフトウェア開発のプロジェクトで、CI/CDがない場合はどうなる?
    • リリースサイクルの高速化
    • 低速なリリースサイクルとノンコア工数の増大
    • 一般的なCI/CDフロー
      • バージョン管理
      • ビルド
      • テスト
      • デプロイ
    • 人手で管理する場合、コストがかかる
  • CI/CDが適用されている場合
    • リリースサイクルの高速化
    • 安全なテスト環境の構築
    • ノンコア工数の削減(コアに集中できる)
    • バージョン管理
      • あらゆるバージョンをデプロイ可能
    • ビルド
      • 自動的にビルドが走る
    • テスト
      • 自動的にテスト
    • デプロイ
      • クラウド環境に自動的に反映
    • あらゆる規模のお客様で、ソフトウェアの重要性が高まっている
    • 重要なテーマになっていると考えられる

Auth0のアプローチ

  • Auth0の構成情報のコード化
    • Universal Login : HTMLコードを作ることが可能
    • User Data : カスタムの認証DBを接続可能、ActionScriptを設定可能(JavaScript)
    • Rules : Auth0のユニークな機能、あらかじめ定義したRuleを設定可能(JavaScript)
    • これらをYAML形式で管理可能
  • DevOpsをAuth0環境に適応
    • Auth0の構成情報を一元管理し、不整合を回避
    • Auth0の構成情報をデプロイするパイプラインを作ることができる

デモシナリオ

  • 起こりうる状況
    • 開発テナントの構成情報をGitHubにプッシュし、本番テナントに反映
    • 誤って削除された本番テナントの情報をGitHubから復元したい
  • 環境
    • GitHub + CircleCI
      • もちろんこれ以外のツール、サービスも対応している
    • Auth0 : 2つのテナントを用意
      • 開発テナント
      • 本番テナント

デモ1 : 開発テナントの設定を本番テナントに反映

Auth0で認証するReactアプリケーションを対象にしたデモを行っていただきました。

まずは開発用のテナントの確認です。

SAP用のApplicationを作成しています。

ConnectionにはLINEを設定。

Universal LoginはカスタマイズされたHTMLを書いています。

Ruleは7つ設定してあります。

一方、本番環境はまっさらな状態で、何も設定されていないデフォルトの状態です。

まずは開発環境をエクスポートします。こちらはauth0-cliを利用します。

わかりやすくするためにルールを追加し、エクスポートしてみると tenant.yamlrules がローカルにダウンロードされます。

GitHub,CircleCIは設定済み。GitHubの development ブランチにプッシュすると、デプロイが走り開発環境に反映されます。

CircleCIのパイプラインは非常にシンプル。環境を作り、ローカル同様auth0-cliでデプロイされます。

master ブランチに development ブランチをマージするプルリクエストを作成し、マージします。

CircleCIが走り、本番環境に対してのデプロイが行われます。

まっさらな本番環境が、開発環境と同様の設定になりました。Application, Conenction, Rules などなど適用されました。

デモ2 : 本番テナントの復元

本番テナントで誤ってRuleを消してしまった場合を想定。これをリカバリします。

CircleCIの最新のワークフローを再実行するだけで戻ります。

Ruleが元に戻りました!

まとめ

  • リリースサイクルの高速化と安全な実験環境の確保、CI/CDは不可欠
  • Auth0の構成情報をバージョンコントロール、CI/CDで一元的に管理
  • DevOpsプラクティスををAuth0環境に適用し、ノンコア作業を自動化して開発者はコア作業に集中する

まとめ

Auth0のインポート/エクスポート、それからauth0-cliを使うことでDevOps環境が簡単に構築できます。ぜひ試してみてください!