プライベート環境におけるテスト入門
  • 26 Jul 2023
  • 1 分で読めます
  • 投稿者
  • ダーク
    ライト

プライベート環境におけるテスト入門

  • ダーク
    ライト

Article Summary

※ このトピックの一部は機械翻訳で処理されています。

どんな問題があるのか

初めてAutifyを使うユーザーが頻繁に遭遇する問題は、インターネットを通じて一般にアクセスできないアプリケーションをどのようにテストするかということです。

Autifyがお客様のアプリケーションをテストする際、クラウドベースのブラウザ上でユーザーの行動をシミュレートします。このブラウザがリクエストを行うと、他のパブリックオリジンのリクエストと同じように、セキュリティレイヤーによって処理されます。したがって、プライベートネットワーク外のユーザーがアプリケーションにアクセスできないようにセキュリティ対策を施している場合、その対策はAutifyの接続を阻止することにもなります。これは、QAサーバーやステージングサーバーの場合、社内のチームのみがアクセスできるように設計されている場合があります。

また、ローカルマシンで開発している場合や、一時的なコンテナでアプリケーションを実行している場合など、単純に外部サービスからアプリケーションに到達できない場合も多くあります。この場合、第三者があなたのコンピュータのローカルサーバーにアクセスできないのと同じように、Autifyは必要なリクエストを行うことができません。

Autifyは公開アプリにはアクセスできるが、プライベートアプリにはアクセスできない

このような場合、テストが失敗するだけでなく、根本的な原因を診断することが困難な場合があります。Autifyがテストの途中で失敗したように見えるかもしれませんが、その理由はよくわかりません。Autifyがテストの途中で失敗したかのように見えることもあります。

シナリオレコーディング時には動作するのに...

さらに厄介なことに、レコーディングの段階では何の問題もないように見えても、再生時に破綻してしまうことがよくあります。

これは通常、レコーディングが行われる際に、セキュリティレイヤー内にあるワークステーションから、あるいは何らかの例外(VPN経由など)が認められているワークステーションから行われているためです。シナリオを録画する際、ほとんどの作業はローカルマシンにインストールされたChrome拡張(Autifyレコーダー)によって行われます。ローカルマシンがテスト対象のアプリケーションにアクセスできる限り、Autifyレコーダーは期待通りに動作し、ローカルワークステーションが(セキュリティ層以外の)発信接続を制限していない限り、プラグインはすべての対話データをAutifyサーバーに送信することができます。このような場合、シナリオのレコーディングは問題なくなく完了し、正常に保存されます。

しかし、テストを実行すると、Autifyはセキュリティ層の外側からのユーザー操作を再生し、接続は失敗します。

録画中にプライベートアプリにアクセスすることは可能だが、再生中にAutifyがアクセスすることはまだできない

プライベートアプリケーションのテスト方法

テストしたいアプリケーションがセキュリティ層の背後にある場合でも、テストは可能です。ただし、一般にアクセス可能なアプリケーションのテストほど簡単ではないかもしれません。Autifyは、セキュリティ層の背後にあるアプリケーションをテストするための2つのアプローチを提供しますが、どちらもいくつかの追加作業と設定が必要になります。

1. 固定IPでアプリケーションにアクセスする

最初の方法は、Autifyに固定IPアドレスを割り当て、そのアドレスからのネットワークへのトラフィックを許可するために、セキュリティ層で特別に許可することです。

IPアドレスは、インターネット上のサーバーの位置を表す数字の羅列です。IP4(現在、サーバーのアドレスを指定する一般的な手段)の場合、4つの数字の組み合わせとなります。例えば、「203.0.113.0」や「198.51.100.0」のようなものです。httpリクエストが行われるたびに、リクエストを行ったサーバーのIPアドレスは、リクエストを受け取ったサーバーに見える。

通常、Autifyがアプリケーションに接続するために使用する正確なIPアドレスは、リクエストごとに異なります。これは、Autifyが多くの異なるサーバーから接続し、それらのサーバーのIPアドレスが予告なく変更されることがあるために起こります。しかし、Autifyからのリクエストを、少数の特定のIPアドレスに制限することも可能です。これは、Autifyが何度アプリケーションにリクエストを送っても、IPアドレスが常に同じであることを意味します。

したがって、そのアドレスからのリクエストはすべてAutifyから発信されたものであると確信することができます。そのため、セキュリティ層で例外を設定し、その特定のアドレスからのリクエストは許可し、それ以外はブロックすることができるようになります。これにより、悪意のあるアクターにアクセスを許すことなく、Autifyをお客様のアプリケーションに接続させることができます。

セキュリティ層を突破するために固定IPを使用するオーティファイ

この方法を使う利点は、実装が比較的簡単であることです。セキュリティ層で例外を作る必要がありますが、これは通常、簡単な手順です。さらに、この方法では、基本的なアプリケーションに変更を加える必要がなく、ネットワーク層で完全にアクセスを許可することができます。古いアプリケーションやレガシーなアプリケーションの場合は、不安定なサーバー環境に変更を加えることなくテストを行うことができるため、この方法は特に有用です。同様に、既存のAutifyのシナリオやテストプランに大きな変更を加える必要はありません。一般にアクセス可能なバージョンのアプリケーションで動作するのであれば、プライベートネットワーク上でも動作します。

逆に、このアプローチの主な欠点は、アプリケーションが少なくともインターネット経由で到達可能であることが必要であることです。つまり、セキュリティ層でトラフィックが拒否されたとしても、ネットワーク上のサーバーに解決可能でなければなりません。そのため、例えばGoogle CloudやAWS上で動作するステージング・サーバーは良い候補となりますが、ローカルの開発環境ではテストがかなり難しくなります。

さらに、サーバー環境の複雑さによっては、テストしたいアプリケーションへのフルアクセスを許可するのに、固定IPアドレスでは不十分な場合があります。例えば、プロキシで保護されているネットワークは、たとえ一貫したIPアドレスを使用していても、Autifyからのアクセスに問題がある場合があります。

最後に、「絶対的な自信」ではなく、「かなりの自信」を持ってよいということを念頭に置いてください。Autifyに固定IPアドレスを割り当てることで、Autifyサーバーからのリクエストは常に同じアドレスを使用することになりますが、そのアドレスから送られたと主張するリクエストがすべて本当にAutifyから送られたということを保証するものではありません。IPアドレスは理論的には一意であるが、IPスプーフィングと呼ばれるプロセスにより、リクエストに「偽の」IPアドレスを割り当てることも可能です。そのため、静的IPアドレスを公開しないように注意する必要があります。また、一般的なテストセキュリティの問題として、テストサーバーに機密データを保存しないようにする必要があります。

2. Autify Connectを使用してアプリケーションにアクセスする

2つ目の方法は、Autifyが提供するAutify Connectと呼ばれる仕組みを利用する方法です。このシステムでは、Autify Connect Clientという小さなプログラム(Autifyがアクセスする必要のあるサーバーにインストール)を使って、テストの実行時にテストサーバーとAutifyサーバーの間に直接接続を開くことができます。インターネット上で直接httpリクエストを送信するのではなく、Autifyはその接続を介してお客様のサーバーに直接リクエストを送信し、サーバーはそれを必要に応じて転送することができるようになります。

Autify using a tunnel created by Autify Connect to get through a security layer

固定IPのアプローチと同様に、セキュリティ層で例外を設ける必要がありますが、この場合、例外は発信トラフィックのみとなります。サーバーと Autify の間に接続が確立されると、セキュリティ層を完全にバイパスして、あたかも Autify Connect ソフトウェアを実行しているサーバーから直接発信されたように http リクエストを行うことができます。例外が発生しないため、セキュリティ層は他のリクエストに対して通常通り動作し続けます。
さらに、Autify Connectプログラムを実行するサーバに制限がないため、ローカルの開発マシンや、アクセスできないDockerコンテナ上で動作するアプリケーションなど、通常は固定IPアドレスを使用してもアクセスできないデバイス間の接続を確立するために使用することができます。

この方法は、自動テストを実行する範囲を大幅に広げますが、固定IPを割り当てるよりもはるかに高い構成コストがかかることに注意する必要があります。Autify Connectプログラムがインストールされ、Autifyへの接続を確立するサーバー上で実行できるように設定されていることはもちろん、テスト実行時にプログラムを実行して接続が成功したことを確認し、テスト実行中に発生した切断に対処するためのメカニズムが存在することが要求されます。また、AutifyのWebプラットフォーム上でアクセストークンを手動で作成し、サーバー上のAutify Connectプログラムで利用できるようにする必要がある。この場合、値が定期的にローテーションされるようにする、一般に閲覧可能なチャネルからアクセスできないようにするなど、シークレットトークンに使用されるものと同じ考慮が必要です。

最後に、通常は問題ありませんが、Webアプリケーションのすべてのトラフィックがトンネルを経由して実行されるため、テストにわずかなパフォーマンスのペナルティが発生する可能性があることに留意する必要があります。

どの方式を使うべきか?

どのようなアプローチを取るかは、お客様のネットワーク設定の性質に依存します。一般的なルールとして、非常に特殊なサーバー要件がない限り、固定IPを使用することがプライベートテストを開始する最も簡単な方法です。具体的には、セキュリティ層が比較的単純で、インターネット経由ですでにアクセス可能なアプリケーションには、固定IPアドレスを推奨します。また、アプリケーションを実行しているサーバーを簡単に設定することはできないが、ネットワーク層で変更を実施することができる場合にも、この方法は適しています。

また、Autify Connectを使用すると、解決に多くのエンジニアリングリソースを必要とする複雑な問題が発生するため、この方法は、より複雑なセキュリティレイヤーがある場合、またはアプリケーション環境がインターネットから容易にアクセスできない場合にのみ使用することをお勧めします。また、ローカルの開発マシンでアプリケーションをテストする場合にも、この方法をお勧めします。

まとめ

Autifyは、公開されているWebアプリケーションを簡単にテストすることができますが、悪意のある人がプライベートネットワークにアクセスするのを阻止するための制限にブロックされることもあります。そのため、セキュリティ層の背後にあるアプリケーションをテストするには、ある程度の追加設定が必然的に必要となります。多くの異なるネットワーク設定があり、多くのセキュリティ実装が非常にユニークであるため、すべての状況で機能する1つの特定のアプローチを提案することは困難です。しかし、Autifyでは、個人でアクセス可能なアプリケーションのテストを簡単に実行できるようにするための様々なソリューションを提供しています。

この記事では、Autifyが提案・推奨するプライベートネットワークのテストに対する2つのアプローチを紹介し、テストソリューションの構築に役立つ背景情報を提供することができたと思います。しかし、より具体的なアドバイスが必要な場合、または、特定のサーバー構成でAutifyのテストを実行する方法について相談したい場合は、遠慮なく弊社のサポートチームまでご連絡ください!


この記事は役に立ちましたか?

Changing your password will log you out immediately. Use the new password to log back in.
First name must have atleast 2 characters. Numbers and special characters are not allowed.
Last name must have atleast 1 characters. Numbers and special characters are not allowed.
Enter a valid email
Enter a valid password
Your profile has been successfully updated.