「さくらのクラウド KMS」を使ってファイルを暗号化・復号化するツールを作ってみた

さくらインターネット Advent Calendar 2025 シリーズ 2 1日目の記事です。

Key Management Service である さくらのクラウド KMS の管理下にある鍵を使いファイルを暗号化、復号化するツールを作ってみました。

zinrai/sakura-kms

使い方

KMS(Key Management Service) のドキュメントより「 KMS キー」を作成済みかつ、 APIキー のドキュメントより「さくらのクラウド KMS 」を利用するための API キーを作成済みであることを前提に使い方を説明していきます。

バイナリのダウンロード

zinrai/sakura-kms からバイナリをダウンロードしてください。

環境変数の設定

# 作成した API キーのクレデンシャルを設定する
$ export SAKURACLOUD_ACCESS_TOKEN="your-api-token"
$ export SAKURACLOUD_ACCESS_TOKEN_SECRET="your-api-secret"

# 作成した KMS キーのリソース ID を設定する
$ export SAKURACLOUD_KMS_KEY_ID="110000000000"

ファイルの暗号化

$ cat hello_world.txt
Hello World
$ cat hello_world.txt | sakura-kms encrypt -output hello_world.txt.enc
Successfully encrypted to hello_world.txt.enc
$ cat hello_world.txt.enc
g6NhbGerYWVzLTI1Ni1nY22ja2V5g6JpZKwxMTM3MDI0NDU1MTeia3YAo2NpcNl3c29zOnYxOmc2UmliRzlpeENCbGJENU9IUVVRTkFiekYzWTZKdGlTSm5rcmNtRHcrWkhia2graFdaQWxGYUpwZHNRUTBMbnFlY3Y1VHVXR2RHaFlFTHZZSWFOMFlXZkVFTDJFTWFqOHFTZXBrT05zUWVWZEwzND2jdmFsxDx5sT70m0LXxMSjWrbvRrgnSNVULM04083czcD09NO9yg8fcl0otQvFtsW0CDq0udBqcyqjdNxiUF8hj/0=
$

ファイルの復号化

$ cat hello_world.txt.enc
g6NhbGerYWVzLTI1Ni1nY22ja2V5g6JpZKwxMTM3MDI0NDU1MTeia3YAo2NpcNl3c29zOnYxOmc2UmliRzlpeENCbGJENU9IUVVRTkFiekYzWTZKdGlTSm5rcmNtRHcrWkhia2graFdaQWxGYUpwZHNRUTBMbnFlY3Y1VHVXR2RHaFlFTHZZSWFOMFlXZkVFTDJFTWFqOHFTZXBrT05zUWVWZEwzND2jdmFsxDx5sT70m0LXxMSjWrbvRrgnSNVULM04083czcD09NO9yg8fcl0otQvFtsW0CDq0udBqcyqjdNxiUF8hj/0=
$ cat hello_world.txt.enc | sakura-kms decrypt -output hello_world.txt.dec
Successfully decrypted to hello_world.txt.dec
$ cat hello_world.txt.dec
Hello World
$

なんで作ったのか

さくらのクラウド KMS は さくらのクラウド シークレットマネージャ などで利用する鍵として使う想定のもので、さらのクラウド KMS を直接利用するというユースケースはなかなか無いと思われます。今回は、 さくらのクラウド KMS の管理下にある鍵を使って getops/sops を使いたくて作りました。

今回のツールを組み合わせて、さくらのクラウド KMS と getops/sops を連携させるツールを作った話は さくらインターネット Advent Calendar 2025 シリーズ 2 2日目に公開します。