2.2.6.2. mijin Catapult(v.2) のノードストレージの暗号化

本章では、AWS上の mijin Catapult(v.2) のノードで使用するストレージの暗号化を説明します。

デプロイ時点では、各ノードがマウントするEBSボリュームは暗号化されていません。
より安全にするため、ブロックチェーンデータやMongoのデータを暗号化することができます。
ここでは、PEERノード3を例に、 mijin Catapult(v.2) を格納している EBSボリュームを暗号化する手順を説明します。
作成日:

2022/8/1

更新日:

2022/9/9

2.2.6.2.1. ノードのブロックチェーンデータを暗号化するまでの流れ

  1. KMS Keyを作成します

  2. ノードの一台を停止する。(製品版では1台停止しても可用性は維持されます)

  3. 停止したノードのスナップショットを取得する

  4. 3で作成したスナップショットをコピーして暗号化したスナップショットを作成する

  5. 4で作成した暗号化済みスナップショットからVolumeを作成する。

  6. 2で停止したPEERノードのブロックチェーンデータのVolumeをデタッチする

  7. 2で停止したPEERノードに5で作成したVolumeをアタッチする

  8. 2で停止したPEERノードを起動する。

注釈

APIノードでも同じ流れですが、APIノードの場合は、mongoデータもマウントしているため、二つのボリュームを暗号化することができます。

2.2.6.2.2. KMS Keyを作成

ストレージを暗号化するために、KMSを使用し、暗号鍵を作成します。
KMSによる鍵作成について知りたい方は、以下を参照してください。

サービスから、セキュリティ、IDをクリックし、「Key Management Service」をクリックします。

../../_images/aws_ebs1.ja.png

カスタマー管理型のキーをクリックし、「キーの作成」をクリックします。

../../_images/aws_ebs2.ja.png

エイリアスに任意の名前を設定し、「次へ」をクリックします。

../../_images/aws_ebs3.ja.png

キー名(エイリアス)を指定し、「次へ」をクリックします。

../../_images/aws_ebs4.ja.png

キー管理者を自分のアカウントを選択し、「次へ」をクリックします。(ここでは現在ログインしているアカウントを指定)

../../_images/aws_ebs5.ja.png

キーを使用するアカウントを選択し、「次へ」をクリックします。(ここでは現在ログインしているアカウントを指定)

../../_images/aws_ebs6.ja.png

値を確認し。「完了」をクリックします。

../../_images/aws_ebs7.ja.png

2.2.6.2.3. ノードの一台を停止する

PEERノード又はAPIノードを一台停止しても、 mijin Catapult(v.2) のブロックチェーンネットワークは停止しません。
ここでは、PEERノード3を例に停止します。

PEERノード3にログインします。

mijin Catapult(v.2) EC2インスタンスログイン方法 を参照し、ノードにログインしてください。

mijin Catapult(v.2) を停止し、EC2インスタンスを停止します。
sudo su - catapult
cd mijin-catapult-package/package/peer/catapult/
docker-compose down
docker-compose ps
exit
sudo shutdown -h now
../../_images/aws_ebs8.png

2.2.6.2.4. 停止したノードのスナップショットを取得する

暗号化ボリュームを作成するには、まずは対象のボリュームのスナップショットを作成する必要があります。
停止したPEERノード3を選択し、ストレージタブをクリックし、対象のVolumeIdをクリックします。
ここで、VolumeIdとデバイス名(/dev/sdf)は控えておきます。
../../_images/aws_ebs9.ja.png

対象ボリュームをチェックをクリックし、「スナップショットの作成」をクリックします。

../../_images/aws_ebs10.ja.png

ここで、このボリュームがどのアベイラビリティゾーンに所属しているかを確認しておきます。

../../_images/aws_ebs10_2.ja.png

検索する時にわかりやすい名前を説明に記載し、「スナップショットの作成」をクリックします。

../../_images/aws_ebs11.ja.png

2.2.6.2.5. 作成したスナップショットをコピーして暗号化したスナップショットを作成する

暗号化したスナップショットから暗号化ボリュームを作成するため、スナップショットをコピーする際に暗号化を行います。
メニューのスナップショットをクリックし、作成したスナップショットをチェックし、スナップショットをコピーします。
../../_images/aws_ebs12.ja.png
送信先リージョンはスナップショットを取得したノードと同じリージョンを選択します。
このスナップショットの暗号化をチェックし、作成したKMSを指定します。
「スナップショットをコピー」をクリックします。
../../_images/aws_ebs13.ja.png
スナップショットが完了済みになっていることを確認してください。
../../_images/aws_ebs14.ja.png

2.2.6.2.6. 暗号化済みスナップショットからVolumeを作成する

暗号化したスナップショットから暗号化ボリュームを作成します。
この時点では、まだマウントされていないボリュームが作成されます。
暗号化したスナップショットをクリックし、「スナップショットからボリュームを作成」をクリックします。
../../_images/aws_ebs15.ja.png
アベイラビリティゾーンをスナップショットを取得したノードと同じアベイラビリティゾーンを選択します。
作成したKMSキーを選択します。
「ボリュームの作成」をクリックします。
../../_images/aws_ebs16.ja.png

注釈

ここで、ノードと違うアベイラビリティゾーンを選択すると、ノードにアタッチする際にボリュームが表示されないため、注意してください。
ノードのアベイラビリティゾーン確認は、 停止したノードのスナップショットを取得する を確認してください。
アベイラビリティゾーンについて理解したい場合は、以下を参照してください。

2.2.6.2.7. 停止したPEERノードのブロックチェーンデータのVolumeをデタッチする

ノードにアタッチされている暗号化されていないボリュームを外します。
再度、PEERノード3からボリュームを選択します。
../../_images/aws_ebs17.ja.png
ボリュームから「ボリュームをデタッチ」をクリックし、ポップアップした画面でOKを押します。
../../_images/aws_ebs18.ja.png

2.2.6.2.8. PEERノードに暗号化済みVolumeをアタッチする

ノードに暗号化済みボリュームをアタッチします
暗号化済みボリュームを選択し、「ボリュームのアタッチ」をクリックします。
../../_images/aws_ebs19.ja.png
インスタンスをPEERノード3を選択し、控えておいたデバイス名を暗号化前のボリュームと同じパスを指定します。
「ボリュームのアタッチ」をクリックします。
../../_images/aws_ebs20.ja.png
暗号化済みボリュームがアタッチされていることを確認します。
../../_images/aws_ebs21.ja.png

注釈

デバイス名は、 停止したノードのスナップショットを取得する にて控えていたデバイス名を指定する必要があります。

2.2.6.2.9. 停止したPEERノードを起動する

停止していたノードを起動し、 mijin Catapult(v.2) もあわせて起動します。
インスタンス一覧から、PEERノード3をチェックし、「インスタンスの開始」をクリックします。
../../_images/aws_ebs22.ja.png

PEERノード3にログインします。

mijin Catapult(v.2) EC2インスタンスログイン方法 を参照し、ノードにログインしてください。

ディスクがマウントされていることを確認し、mijin Catapult(v.2) を起動します。
df -h
sudo su - catapult
cd mijin-catapult-package/package/peer/catapult/
docker-compose up -d
docker-compose ps
../../_images/aws_ebs23.png