Gradle 認証情報プラグイン - gradle-credentials-plugin

プラグイン紹介

gradle-credentials-plugin は、パスワードベース暗号化 (PBE) を使用して暗号化された認証情報を保存し、アクセスできる Gradle プラグインである。

このプラグインを使うと、Gradle ビルドスクリプトに認証トークン、パスワード、アカウント情報を直接露出させず、暗号化して指定できる。

公式リポジトリは次のとおりである。

プラグインの基本設定方法

credentials サンプルプログラムを作成する

まずプロジェクトを作成する。

% mkdir gradle-credentials-plugin-tutorial
% cd gradle-credentials-plugin-tutorial
% gradle init

credentials を登録する

続いて credentials を登録する。

% gradle addCredentials --key username --value devkuma
% gradle addCredentials --key password --value 1234

登録した credentials の内容を確認する

credentials を登録すると、{USER_HOME}/.gradle/gradle.encrypted.properties に作成されて登録される。

では、認証情報が暗号化された状態か確認する。

% cat ~/.gradle/gradle.encrypted.properties
username=GIBlt3gLLDi/nVavN+FNUg\=\=
password=9GFBSZb+e9bVpdLnUCW1GQ\=\=

build.gradle ファイルを作成する

ビルドスクリプトを次のように作成する。

plugins {
    id 'nu.studer.credentials' version '3.0'
}

println "Username: ${credentials.forKey('username')}, Password: ${credentials.forKey('password')}"

復号化を確認する

Gradle を実行してみると、暗号化された文字列が平文で表示されることを確認できる。

% ./gradlew

> Configure project :
Username: devkuma Password: 1234

... omitted ...

特定のディレクトリを指定して properties を作成する方法

上では、credentials を登録するとデフォルトで {USER_HOME}/.gradle/gradle.encrypted.properties に作成および登録されると説明した。 しかし、必要に応じて properties ファイルの場所を変更したい場合もある。そのような場合は credentialsLocation オプションを使用する。

ここでは先ほどのプロジェクトを利用して、プロジェクトディレクトリの中に properties を置いてみる。

properties を初期化する

混乱を避けるため、先ほど作成した Root ({USER_HOME}) にある gradle.encrypted.properties ファイルを削除する。

% rm ~/.gradle/gradle.encrypted.properties

ディレクトリを指定して credentials を登録する

続いて、credentials 登録コマンドにディレクトリを指定する credentialsLocation オプションを追加して実行する。

% gradle addCredentials --key username --value devkuma -PcredentialsLocation=.
% gradle addCredentials --key password --value 1234 -PcredentialsLocation=.

ここでは現在位置を意味するドット (.) を指定している。

場所を指定して登録した credentials の内容を確認する

コマンドに credentialsLocation オプションで指定したとおり、現在位置に ./gradle.encrypted.properties が作成されたことを確認できる。

では、認証情報が暗号化された状態で保持されているか、もう一度確認する。

% cat ./gradle.encrypted.properties
username=GIBlt3gLLDi/nVavN+FNUg\=\=
password=9GFBSZb+e9bVpdLnUCW1GQ\=\=

場所を指定して復号化を確認する

場所を指定して Gradle を実行すると、暗号化された文字列が平文で表示されることを確認できる。

% ./gradlew -PcredentialsLocation=.

> Configure project :
Username: devkuma Password: 1234

... omitted ...

参考

上記のサンプルコードは GitHub で確認できる。