記事
· 2023年6月14日 11m read

初めてのIAM 使用体験

オンラインコース「Hands-On with InterSystems API Manager for Developers」のフィードバック 

Docker コンテナと REST API の基本的な知識で、InterSystems API Manager による API とマイクロサービスの制御に挑戦したいと思い、 ホストにローカルの IRIS インスタンス(Windows OS)を使用し、Linux VM で IAM (ゲスト)を実行するこのオンラインコースを実行してみました。 

まず InterSystems API Manger(IAM)を紹介してから、ローカル環境をセットアップするための手順を説明し、最後にコースの各章の内容を確認しましょう。

はじめに

今日では、API トラフィックの管理、監視、および保護が UI ポータルに集約される 簡単なデプロイのメリットを生かして、API を管理することが非常に重要となっています。

InterSystems API Manger(IAM)は、IRIS アプリケーションが消費し公開する API とマイクロサービスを制御します。 下流と上流のシステムの間の API ゲートウェイであり、どの API がどれくらいの頻度で誰に呼び出されたのかを視覚的に追跡する方法も備わっています。 

IAM を使用するメリット:

  • HTTP ベースの API の監視
  • トラフィックの制御 
  • セキュリティメカニズムによる API の保護 
  • 新しいオンボーディング開発者にとっての使いやすさ

IAM のセットアップ

IAM のセットアップを開始する前にインストールしたもの

  • Windows(IRIS インスタンスをインストール)
  • Linux VM(Docker をインストール)

InterSystems IRIS インスタンスで IAM を使用できるようにします。

  1. IRIS インスタンスの管理ポータルを開き、IAM を有効にします。

    1. 管理ポータルで、[システム管理]>[セキュリティ]>[ユーザー]を選択し、IAM ユーザーを選択します。
      1. [パスワード]ラジオボタンをオンにします。
      2. IAM ユーザーのパスワードを入力し、確認します。
      3. [ユーザーを有効化済み]チェックボックスをオンにします。
      4. [保存]を選択します。
  2. IAM Web アプリケーションを有効にします(IRIS ライセンスに「API Management」が指定されていることを確認してください)。 

    1. 管理ポータルで、[システム管理]>[セキュリティ]>[アプリケーション]>[Web アプリケーション]を選択し、"/api/iam" を選択します。 
      1. [アプリケーションを有効にする]チェックボックスをオンにします。
      2. [保存]を選択します。

IAM インストールファイルをダウンロードして解凍します。

  1. Linux 環境内の WRC から IAM インストールキットをダウンロードします。
  2. tar ファイルを解凍します(iam-image.tar は IAM Docker イメージであるため、解凍しないでください)。

IAM のセットアップと起動 

このステップでは、ROOT ユーザーを使用しました。Linux ユーザーで sudo を使用すると、「Cannot load the Manager Potal properly(Manager Portal を正しく読み込めません)」というエラーが発生するか、セットアップスクリプトが環境変数値を docker-compose.yaml ファイルに渡せなかったためです。 後者の場合、"sudo -E" を使って環境変数を渡すと回避できました。

  1. IAM アーカイブを解凍したディクショナリで "docker load -i iam_image.tar" コマンドを実行してターミナルを開きます。
  2. 現在のディレクトリで "source ./scripts/iam-setup.sh" を実行するか、scripts フォルダで "source ./iam-setup.sh" を実行します。
    1. https://containers.intersystems.com/contents の正確な IAM イメージ名とリポジトリ名を入力します。例: intersystems/iam:3.0.2.0-2(このステップは必須です。これを実行しない場合、"docker compose" を行ったときにリポジトリの認証に失敗したというエラーメッセージが表示されます。)
    2. ホストマシンの正確な IP アドレスを入力します(IPV4 の仕様は Windows の設定で確認できます。localhost や 127.0.0.1 を入力しないでください)。  
    3. Windows OS の IRIS インスタンスのポート番号を入力します(例: 52773)。 
    4. IAM ユーザーのパスワードを 2 回入力します。
  3. scripts ディレクトリ内で、"iam-test.sh" を実行して、接続をテストしてください。
  4. scripts ディレクトリ内で、"docker compose up -d" を実行して IAM を起動します。
  5. 次のアドレスにアクセスし、Linux の IAM ポータルを起動します: http://localhost:8002/overview

VM を使ってホストアドレスを ping できない場合は、Windows ファイアウォールの詳細設定にある[受信の規則]を確認してください。 [ファイルとプリンタの共有(エコー要求 - ICMPv4-In)プロファイル: プライベート、パブリック]を有効にします。

IAM のテスト

インストールキットの scripts ディレクトリ内に iam-test.sh というスクリプトがあります。 

"./iam-test.sh" と入力して実行し、IAM と IRIS インスタンス間の接続のテストを開始します。 

注意: テスト結果に「サービスを作成中にエラーが発生しました。 HTTP ステータスコード:000 またはサービス作成中のエラー。 HTTP ステータスコード:409」が表示された場合は、Docker のステータスを確認してください。健全であるにも関わらず、動作しない場合は、コンテナをシャットダウンし、もう一度 docker compose を実行してください。私の経験では、VM を一時停止すると、これが発生することがあります。

詳細については、こちらの IAM セットアップドキュメントをご覧ください: https://docs.intersystems.com/components/csp/docbook/DocBook.UI.Page.cls?KEY=CIAM3.0_install#CIAM3.0_install_setupIAM

ハンズオン演習: https://learning.intersystems.com/course/view.php?name=IAMExercise

コースの各章

この演習の後に 3 つの章を完了したので、その内容を共有したいと思います。

  • サービスのセットアップ
  • ルートのセットアップ
  • コンシューマーとプラグインの設定

IAM を使用し始める前、この演習では GET メソッドを使って REST リクエストを行うことが求められていました。この HTTP リクエストはクライアントサーバーからのもので、IRIS インスタンスにビルドされた Web アプリケーションを直接エンドポイントとしてポイントしています。 

次のステップでは、API リクエストが転送されるサービスと着信リクエストを分析して最適な API に割り当てるルートのセットアップ方法が説明されていました。

 

サービスとルーターのセットアップ

サービスとは? 

サービスは、API Manager を InterSystems IRIS に接続するように構成されます。そのため通常は、InterSystems IRIS 内の REST サービスまたは Web アプリケーションごとに、サービスは 1 つです。 たとえば、ベースパスが /rest/coffeemakerapp の Web アプリケーションがある場合、この URL に対し、API Manager 内で 1 つのサービスを構成します。 サービスは通常、ルートの前に定義されます。

ルートとは?

ルートは、クライアントアプリケーションが InterSystems API Manger に対して呼び出すものを定義します。 インターフェースを使用すると、定義されたサービスからそれに対応するルートが簡単に作成されるようになっているため、通常は、ルートの前にサービスを定義します。 ルートは一般に、InterSystems IRIS 内のパスを単純化したものです。 次の例では、 /test、/coffeemakers、/coffeemaker、および /newcoffeemaker のルートを作成します。 ルートが具体的であるほど、メトリックの表示と特定のルートへのプラグインの追加において、API Manager 内で API をより細かく制御できます。

サービスを作成する:

  1. IAM 管理ポータルに移動し、[サービス]タブを選択します。
  2. [新しいサービス]をクリックして名前を付けます。
  3. [URL を使用して追加]を選択します。
  4. Web アプリケーションに指定した正確な URL パスを[ベース URL]に指定し、インスタンスの IP アドレスが正しいことを再確認します(localhost または 127.0.0.1 を使用しないでください)。

ルートを作成する:

  1. サービスの要約まで下にスクロールし、[ルートを追加]をクリックしアンス。
  2. [名前]、[プロトコル」、[パス]を指定します。
  3. [サービス]フィールドに、サービスの詳細が自動的に生成されます。
  4. この演習では、[詳細]フィールドの[パスをストリップ]をオフにするように求められました。オンである場合、InterSystems IRIS にリクエストを送信する際に、InterSystems IRIS エンドポイントに接続するために重要となるパスが削除されてしまいます。

サービスとルートが作成されたら、Postman などの REST クライアントを使用して、直接 IAM にリクエストを送信し、「200 ok」のレスポンスを受信することができます。例: GET http://10.0.0.1:8000/test(/test は作成されたルートです。)

注意: 私の場合、HTTP リクエストの URL は Linux VM の IP アドレスと一致していますが、この IP アドレスは[設定]> [ネットワーク]で確認するか、ターミナルで "ifconfig" コマンドを実行して調べてください。 

IAM 管理ポータルを開いてリクエストを確認すると、すべての coffeemakers が REST クライアントから IAM に正しく記録されているのがわかります。

HTTP リクエストを直接 IRIS Web アプリケーションに送信するのではなく、基本的な CRUD リクエストであっても、IAM を使用すると、視覚的な表現によって API を制御し、エンドポイントのセキュリティを維持することができます。

プラグインの使用

IAM を使用するメリットの 1 つに、スロットリングに役立つレート制限プラグイン、ACL プラグイン、OAuth2.0 プラグインなど、多数のプラグインの存在が挙げられます。 個人的なケースとして、basic-auth の有効化とコンシューマーの作成における体験を紹介します。

basic-auth プラグインを有効にする

  1. IAM 管理ポータルに移動し、[プラグイン]タブを選択します。
  2. [新しいプラグイン]>[基本認証]>[作成]をクリックします。

Basic Auth に必要な IRIS ユーザーを作成する 

  1. IRIS 管理ポータルを開きます。 
  2. [システム管理]>[セキュリティ]>[ユーザー]>[新規ユーザーの作成]に移動します。
  3. ユーザーの名前とパスワードを設定します。
  4. 他は空のままにして、[保存]をクリックします。私の場合は "CoffeeManager" というユーザーを作成しました。

コンシューマーを作成して、資格情報をセットアップする

  1. IAM 管理ポータルに移動し、[コンシューマー]タブを選択します。
  2. [新しいコンシューマー]をクリックし、[ユーザー名]に「CoffeeManger」(私の場合)と入力して、[作成]をクリックします。
  3. CoffeeManager 情報ページ >[資格情報]>[新しい Basic Auth 資格情報]に移動します。
  4. IRIS インスタンスで作成したユーザー資格情報を使用し、保存します。

これで、basic-auth プラグインを機能させるための要件がすべて揃いました。

前のステップで作成した "CoffeeManager" の資格情報で Basic Auth を使って、HTTP リクエストを送信します。 

CoffeeManager 情報ページ >[アクティビティ]に移動すると、リクエストが成功したことが記録されていることを確認できます。

まとめ

まとめると、InterSystems API Manager(IAM)とは何か、またそのメリットを最初に紹介しました。 続いて、Linux VM で IAM をセットアップする方法と基本機能を実装して IAM を使用する方法を示し、サービスとルートの作成、プラグインとコンシューマーの有効化を行いました。

ご質問やコメントがございましたら、お気軽にご連絡ください。

IAM をお楽しみください!

@Jimmy Xuさんが書いた元の記事へ
ディスカッション (0)1
続けるにはログインするか新規登録を行ってください