Androidアプリ開発におけるセキュアなプロパティファイルのベストプラクティス:ANDROID_SECURE_PROPS_PATH徹底活用


このプロパティの役割

  • ビルドプロセス中にこれらの機密情報にアクセスできるようにします。
  • 機密情報 (パスワードや API キーなど) を安全に格納するために使用されます。
  • Android デバイス上のセキュアなプロパティファイルへのアクセスを提供します。

使用方法

このプロパティを使用するには、以下の手順に従います。

  1. CMAKE_ANDROID_SECURE_PROPS_PATH 変数に、セキュアなプロパティファイルのパスを設定します。
  2. ターゲットの ANDROID_SECURE_PROPS_PATH プロパティを設定します。
  3. CMake の get_property コマンドを使用して、ターゲットからプロパティ値を取得します。
  4. 取得したプロパティ値を使用して、セキュアなプロパティファイルにアクセスします。

# セキュアなプロパティファイルのパスを設定
set(CMAKE_ANDROID_SECURE_PROPS_PATH "/path/to/secure_props.txt")

# ターゲットの ANDROID_SECURE_PROPS_PATH プロパティを設定
add_executable(my_app main.cpp)
set_target_properties(my_app PROPERTIES ANDROID_SECURE_PROPS_PATH "${CMAKE_ANDROID_SECURE_PROPS_PATH}")

# ターゲットからプロパティ値を取得
get_target_property(secure_props_path my_app ANDROID_SECURE_PROPS_PATH)

# セキュアなプロパティファイルにアクセス
file(READ "${secure_props_path}" property_value)

# 取得したプロパティ値を使用
message(STATUS "Property value: ${property_value}")
  • ビルドプロセス中にセキュアなプロパティファイルにアクセスする場合は、適切なセキュリティ対策を講じる必要があります。
  • セキュアなプロパティファイルは、デバイス上で安全な場所に格納する必要があります。
  • ANDROID_SECURE_PROPS_PATH プロパティは、Android NDK r10 以降でのみ使用できます。


# セキュアなプロパティファイルのパスを設定
set(CMAKE_ANDROID_SECURE_PROPS_PATH "/path/to/secure_props.txt")

# ターゲットの ANDROID_SECURE_PROPS_PATH プロパティを設定
add_executable(my_app main.cpp)
set_target_properties(my_app PROPERTIES ANDROID_SECURE_PROPS_PATH "${CMAKE_ANDROID_SECURE_PROPS_PATH}")

# ターゲットからプロパティ値を取得
get_target_property(secure_props_path my_app ANDROID_SECURE_PROPS_PATH)

# セキュアなプロパティファイルにアクセス
file(READ "${secure_props_path}" property_value)

# 取得したプロパティ値を出力
message(STATUS "Property value: ${property_value}")

このコードの説明

  1. 最初の行は、CMAKE_ANDROID_SECURE_PROPS_PATH 変数に、セキュアなプロパティファイルのパスを設定します。
  2. 2 番目の行は、my_app という名前のターゲットを作成します。
  3. 3 番目の行は、my_app ターゲットの ANDROID_SECURE_PROPS_PATH プロパティに、CMAKE_ANDROID_SECURE_PROPS_PATH 変数の値を設定します。
  4. 4 番目の行は、get_target_property コマンドを使用して、my_app ターゲットから ANDROID_SECURE_PROPS_PATH プロパティ値を取得します。
  5. 5 番目の行は、file コマンドを使用して、セキュアなプロパティファイルを読み込み、その内容を property_value 変数に格納します。
  6. 6 番目の行は、message コマンドを使用して、property_value 変数の値を出力します。
cmake .
make
./my_app

出力

Property value: This is a secret property
  • ビルドプロセス中にセキュアなプロパティファイルにアクセスする場合は、適切なセキュリティ対策を講じる必要があります。
  • セキュアなプロパティファイルは、デバイス上で安全な場所に格納する必要があります。


環境変数

ANDROID_SECURE_PROPS_PATH プロパティの代わりに、以下の環境変数を使用できます。

  • ANDROID_EMU_EXEC_PATH (エミュレータを使用している場合)
  • ANDROID_SECURE_PROPS

これらの環境変数は、ANDROID_SECURE_PROPS_PATH プロパティよりも優先的に使用されます。

NDK 固有の API

NDK には、セキュアなプロパティファイルにアクセスするための API が用意されています。これらの API を使用するには、NDK ヘッダーファイル android/secure_storage.h をインクルードする必要があります。

カスタム CMake モジュール

セキュアなプロパティファイルにアクセスするためのカスタム CMake モジュールを作成することもできます。この方法は、より複雑なユースケースに適しています。

各方法の詳細

環境変数

環境変数は、最もシンプルで使いやすい方法です。しかし、環境変数はすべてのプロセスで共有されるため、セキュリティ上のリスクが伴います。

NDK 固有の API

NDK 固有の API は、ANDROID_SECURE_PROPS_PATH プロパティよりも柔軟性が高く、セキュリティも向上しています。しかし、NDK ヘッダーファイルのインクルードが必要になるため、コードが複雑になります。

カスタム CMake モジュール

カスタム CMake モジュールは、最も柔軟性が高く、セキュリティも向上しています。しかし、開発には時間と労力がかかります。

どの方法を選択すべきか

どの方法を選択するかは、ユースケースによって異なります。

  • より柔軟性とセキュリティが必要な場合は、NDK 固有の API またはカスタム CMake モジュールを使用します。
  • シンプルで使いやすい方法が必要な場合は、環境変数を使用します。
  • ビルドプロセス中にセキュアなプロパティファイルにアクセスする場合は、適切なセキュリティ対策を講じる必要があります。
  • セキュアなプロパティファイルは、デバイス上で安全な場所に格納する必要があります。