コンテンツへスキップ

Appiumサーバーのセキュリティ

Appiumチームは、Appiumサーバーのセキュリティ確保に全力を尽くしています。これは、Appiumがマルチテナント環境で実行される場合、または複数のユーザーが同じAppiumサーバーでセッションを実行する場合に特に重要です。一般的に、次のすべてが真である場合にのみ、Appiumのすべての機能を安全に有効にできます。

  • ローカルまたは保護された内部ネットワーク内で独自のAppiumサーバーを実行している。
  • 信頼できない当事者と共有していない。
  • Appiumのポートをインターネット全体に公開していない。

しかし、多くのAppiumユーザーは、そのような安全な環境を保証できない可能性があるため、Appiumチームは多くの機能をセキュリティ保護メカニズムの背後に配置しています。これにより、システム管理者(Appiumサーバーの起動を担当する人)は、これらの機能を *明示的にオプトイン* する必要があります。(サードパーティのドライバおよびプラグインの作者もセキュリティフラグの背後に動作を隠すことができます。)

セキュリティ上の理由から、Appiumクライアントセッションは、機能の有効化を機能経由で要求することはできません。これは、Appiumサーバーを設定して起動するサーバー管理者の責任です。

セキュリティサーバー引数

サーバーCLI引数ドキュメントには、コマンドラインからAppiumを起動する際に渡すことができる3つの関連引数が記載されています。

パラメータ
説明
--relaxed-security このフラグを設定すると、(--deny-insecureでブロックされない限り)すべての安全でない機能が有効になります(下記参照)。
--allow-insecure このフラグを、機能名のカンマ区切りリスト、または機能リストを含むファイルへのパス(各名前は別行)に設定すると、リストされた機能のみが許可されます。たとえば、--allow-insecure=adb_shellは、*adb_shell*実行機能のみが有効になります。これは、--relaxed-securityも使用されている場合を除き、その場合はすべての機能が引き続き有効になります。このフラグを--relaxed-securityと組み合わせることは意味がありません。
--deny-insecure このフラグも、機能名のカンマ区切りリスト、または機能ファイルへのパスに設定できます。ここにリストされている機能は、--relaxed-securityが設定されているかどうかに関係なく、また--allow-insecureにも名前がリストされているかどうかに関係なく、無効になります。

安全でない機能

各Appiumドライバは独自のセキュリティを担当し、独自の機能名を生成できます。したがって、特定のドライバのドキュメントを読んで、使用する可能性のある機能名を確認する必要があります。Appiumの公式ドライバの一部からの不完全な例リストを次に示します。

機能名
説明 サポートされている拡張機能
get_server_logs Webdriverログインターフェースを介してAppiumサーバーログを取得できるようにします。 IOS、XCUITest、Android、UiAutomator2、Espresso
adb_shell mobile: shellコマンドを使用して、ADBを介して任意のシェルコマンドを実行できるようにします。 Android、UiAutomator2、Espresso
record_audio ホストマシンのオーディオ入力の録音 を許可します。 XCUITest
execute_driver_script 複数のAppiumコマンドを持つリクエストを送信できるようにします。 Execute Driver Plugin

Appiumサーバーでget_server_logs機能を有効にするには、次のように起動できます。

appium --allow-insecure=get_server_logs

複数の機能を有効にするには

appium --allow-insecure=get_server_logs,record_audio

1つの機能を除くすべての機能を許可するには

appium --relaxed-security --deny-insecure=adb_shell