間違って流失してしまうと高額な被害を及ぼす可能性のあるAPIキーを、悪用からどうやって守ればいいのでしょうか?この記事では、GoogleのSecrets Gradleプラグインを使って、比較的簡単なセットアップでリポジトリからAPIキーを隠す方法を紹介します。
注意:APIキーバイナリの一部なので、APKを逆コンパイルすることで復元可能です。そのため、(可能であれば)APIに制限を加えるなど、他の手段も加えて保護することをお勧めします。
プラグインのセットアップ
Groovy
を使ってる場合はアプリレベルのbuild.gradle
、Kotlin
を使っている場合はbuild.gradle.kts
でプラグインを指定してください。
ソースフォルダ内のlocal.properties
にAPIキーが記録されている場合はこのステップはスキップしてもらって構いません。
もし、他の任意のファイルにAPIキーが含まれている場合は、そのファイルを指定します。
これらのファイルはソースコントロールから外されているよう注意してください(レポジトリにアップロードされるのを防ぐには.gitignore
ファイルに追加する必要があります)。
この記事では、secrets.properties
にAPIキーが記録されているとします。
Gradleファイルに以下のコンフィグレーションコードを追加してください。
プロジェクトの構築
ここで一度プロジェクトを構築してください。プラグインを適用してプロジェクトを構築すると、APIキーは2つの方法でアクセスできるようになります。
安全に使用
これでソースコード全体から、APIキーを直接参照および表示することなく安全に使えるようになりました。
今まで、この様に流失しやすい形で使用されていたAPIリクエストが
安全で読みやすい形式に変わりました。
ビルドバリアント固有のプロパティ
ビルドバリアント固有のプロパティ(ビルドタイプやフレーバー)を設定するには、プロジェクトのルートディレクトリに、バリアントと同じ名前のプロパティファイルを作成してください。例えば、ビルドタイプ「release
」に固有のキーを設定するには、release
固有のキーを含むrelease.properties
というファイルを新規に作成して、それを参照してください。