[Kotlin ガイド #4] 機密情報を分離する

Kotlinガイド関係の記事のサムネイル

やりたいこと

Kotlin環境でサーバーを作っていると、DBへのアクセストークンやパスワードなど、Git管理に含めたくないデータ、つまり機密情報が出てくると思います。

このときに必要なデータを使用する箇所にハードコードで記述するのは絶対にダメなので、どう管理するのがいいのかというのを調べてみました。

Rubyでいう.envファイル的な分離をKtorでもしたいということです。

環境

  • Kotlin
  • Ktor
  • InteliJ IDE Ulitimaite

具体的な方法について

今回はいちばん簡単な方法として、.ideaに保存する方法を紹介します。

この方法は、環境変数として、.idea内のworkspace.xmlにキーバリュー方式で機密情報を保存する方法です。

基本的に.ideaフォルダは共有しない前提でいます。

他に、 以下のライブラリ(dotenv-kotlin)を使う方法もあります。

手順

設定方法

以下の手順で、実行/デバッグ構成画面を開きます。

実行 -> 実行環境の編集 -> 実際に実行する構成を選択 -> 環境変数(E):

その後、枠の右側のノートアイコンをクリックして、上のローカル環境変数の部分に分離したい機密情報を設定します。

今回は、テストとして以下のように機密情報を追加しました。

  • 名前 : test
  • 値 : aaa

コードからの参照方法

コードから環境変数に設定した機密情報を引っ張ってくるには、System.getenv("名前")を使用します。

この変数で取得するString型はnull許容(String?)なので、nullチェックをして値が正常に取得できたかチェックして取得できなかった場合のケアも忘れずに行うようにしましょう

Kotlin
val connectionString = System.getenv("test")

if(connectionString == null) {
    Log.d("Main","環境変数からMongoDBへのアクセスURLが取得できませんでした")
}else{
    Log.d("Main","環境変数からの機密情報の取得に失敗")
}

注意点

Gitなどで外部に公開する場合、.ideaフォルダは、.gitignoreでバージョン管理から除外しておきましょう

.gitignore
.idea/

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です