意外と知らない?Mavenで安全にパスワードを保存する方法

さて、前回エントリでは様々なリポジトリにアクセスするのですが、その度にユーザー名とパスワードを入力するのは面倒ですよね。入力間違えてビルド失敗とか目も当てられない・・・!

settings.xmlに直接ユーザー名とパスワードを保存する方法もあるのですが、リポジトリの設定などをsettings.xmlで共有する可能性も考えると直接記述するのはセキュリティ的に心配です。

そこで今回はあまり知られていない?Mavenで安全にパスワードを保存しておく方法を紹介します。

マスターパスワードを設定する

Mavenではマスターパスワードを設定し、それをキーにして各サーバーのパスワードを暗号化して保存します。マスターパスワードの生成は

mvn --encrypt-master-password <password>
[/shell]このコマンドを実行してください。標準出力に
{jJLZkyJ3m5cHQjCxDJwPA91P4n/AMS3mNy8Ltz6UdLs=}

のように暗号化されたパスワードが出力されます。コマンドライン上にパスワードを直接入力するためシェルのヒストリーに残るので注意しましょう。

出力されたパスワードを~/.m2/settings-security.xmlに記述します。

<?xml version="1.0" encoding="UTF-8"?>
<settingsSecurity>
	<master>マスターパスワードはいつものあれですよ {jJLZkyJ3m5cHQjCxDJwPA91P4n/AMS3mNy8Ltz6UdLs=}</master>
</settingsSecurity>

ちなみにブーレスの外の文字列は無視されるので、上記のようにコメントを記述することができます。

サーバーパスワードを設定する

mvn --encrypt-password <password>

サーバーパスワードもマスターパスワードと同じようにコマンドライン上から生成します。settings-security.xmlがないとエラーを出力するので注意しましょう。

ここで出力されたパスワードをsettings.xmlに記述します。

<?xml version="1.0" encoding="UTF-8"?>
<settings>
	<servers>
		<server>
			<id>github.com</id>
			<username>nagaseyasuhito</username>
			<password>{XkXasoj3bu8HgKQeh0lOMHNMo+dRJXKlHvCiVsRJBpE=}</password>
		</server>
		<server>
			<id>mavenrepository.googlecode.com</id>
			<username>nagase@nagaseyasuhito.net</username>
			<password>{0EMvF/Q0QCAHQhOLhAwqrCRC7YjviO1yIrPTPA/JIUI=}</password>
		</server>
	</servers>
</settings>

こんな感じ。serverのidはscmやrepositoryのidを合わせます。

これでMaven実行中にいちいちユーザー名とパスワードを聞かれなくなりました!JenkinsなどのCIサーバーからでもパスワードの入力を気にせずデプロイできるようなりますね。

何かの参考になれば!

「意外と知らない?Mavenで安全にパスワードを保存する方法」への1件のフィードバック

コメントを残す

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

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>