質問: オープンソースのAndroidアプリを作成しています。 処理のなかで外部Mysqlサーバーとの接続をしてデータを取得したいのですが そもそも、オープンソースのコードのなかにパスワードやアクセスキーなどの秘密情報を含まずに公開することはできるのでしょうか? 個体識別番号やMACアドレスなどの情報を利用すれば可能かと思いましたが、あと一歩のところでうまくいかず困っています。
回答: 一般的な設計論として web app ではセキュリティや拡張性を確保するため - フロントエンドサーバ : httpd 等、お客様が直接アクセスするサーバ - バックエンドサーバ : DB 等、フロントエンドサーバからのみアクセスするサーバ のように分離して構成するものです (ネットワーク的にも分離します) The Internet (Android App) から直接接続できるところに DB を置いたりはしません。 なので「一般的な web app 」において、すなわち、 お客様が直接使う user agent (Chrome とか Edge とか IE とか Android App とか) に、 データベースに対するアクセスキーやパスワードを置く必要はないと思います。 Android App はフツーに http アクセスするだけです。 公開したいソースコードが Android app だけでなくて フロントエンドサーバ上で動かす middleware である場合、 その middleware の DB アクセス部はパスワード類を設定ファイルに格納すればよく 設定ファイルは各サイトで書き換えて使ってね!というコメントとともに 設定ファイルのサンプルをプロジェクトに含めておけばよいでしょう。 VPN でイントラネットに手を突っ込むような Web App でない App なら・・・ DB マシンに直接ログインできそうですし `mysqladmin` だろうが `mysqldump` だろうが打ち放題でしょう。 となると接続パスワードの類は承知の上ってことになりそうですし、 やはり設定ファイルっていうか、その辺はサンプルがあれば十分となりそうです。