LoginSignup
2
0
記事投稿キャンペーン 「2024年!初アウトプットをしよう」

Nix向けシークレットを管理ツールagenixを使ってみる

Posted at

背景

Nixでシークレット管理方法を探していたところ、agenixが良さそうだったので試してみることにしました。

流れ

下記を参考にインストールしていく
https://github.com/ryantm/agenix

今回はFlakes経由で以下の流れでagenixを試す

  • キーペアを作成する
  • agenixをインストール・設定
  • 機密情報を暗号化
  • 暗号化したシークレットをGitリポジトリにpush
  • Gitリポジトリにpushしたシークレットをnixから参照し復号化する

キーペアを作成する

cd ~
ssh-keygen -t ed25519

agenixをインストール

agenixのrust版であるragenixをインストール・設定を行います

flake.nix
{
  inputs = {
    agenix.url = "github:yaxitech/ragenix";
  };
}
{
  config,
  pkgs,
  username,
  inputs,
  ...
}: {
  # ageモジュールを導入
  imports = [
    inputs.agenix.nixosModules.default
  ];

  # agenixコマンドを導入
  environment.systemPackages = [
    inputs.agenix.packages."${pkgs.system}".default
  ];

  # 復号化に利用する秘密鍵を指定
  age.identityPaths = [
    "/home/${username}/.ssh/id_ed25519"
  ];
}

機密情報を暗号化

secrets.nixを作成する

mkdir secrets
cd secrets
vi secrets.nix

先ほど作った公開鍵をsecrets.nixに記入する

secrets.nix
let
  key1 = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMPUs/F1kXYEZ6b1+Twy4l/a9OT4MXDEfejh5Yc543zk";
in {
  "secret1.age".publicKeys = [key1];
}

以下のコマンドを使用して、シークレットファイルを作成する

agenix -e secret1.age

上記を実行するとエディタが開くので暗号化したい情報を入力、保存し終了すると暗号化されたファイルがsecret1.ageが生成される。暗号化したシークレットをGitリポジトリにpushする

暗号化して秘密鍵がないと復号化できないとはいえ、機密情報をGitにPushするのは抵抗があったため、プライベートGitリポジトリにしてpushしました。

Gitリポジトリにpushしたシークレットをnixから参照する

nixからGitリポジトリを参照できるようにする

flake.nix
{
  inputs = {
    agenix.url = "github:yaxitech/ragenix";
+    mysecrets = {
+      url = "git+ssh://git@github.com/fabiiw05/xxxxx";
+      flake = false;
+    };
  };
}

暗号化したシークレットを復号化して任意のPathに配置する

{
  username,
  inputs,
  ...
}: {
  age.secrets = {
    id_rsa = {
      file = "${inputs.mysecrets}/keys/id_rsa.age";
      path = "/home/${username}/.ssh/id_rsa";
      mode = "600";
      owner = "${username}";
      group = "users";
    };
  };
}

おわり

簡単に暗号化・復号化できました。
また、agenix -e xxxxxで暗号化情報を更新できるので運用面でも楽できそうです

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0