スキップしてコンテンツを表示

暗号化された Amazon EFS ファイルシステムを Amazon EKS のポッドにマウントする方法を教えてください。

所要時間3分
0

暗号化された Amazon Elastic File System (Amazon EFS) ファイルシステムを Amazon Elastic Kubernetes Service (Amazon EKS) のポッドにマウントしたいと考えています。

解決策

Amazon EFS ファイルシステムのデータは、転送中のデータや保管中のデータの状態でも暗号化できます。転送中のデータにはデフォルトで設定されます。

注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI のエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。

転送中のデータを TLS で暗号化する

TLS を使用して転送中のデータを暗号化するには、次の手順を実行します。

  1. Amazon EKS クラスター用に Amazon EFS コンテナストレージインターフェイス (CSI) ドライバーをデプロイします。

  2. Amazon EFS ファイルシステムを作成します。
    注: ファイルシステムを作成するときに、EKS ノードが配置されているすべてのアベイラビリティーゾーンで Amazon EFS のマウントターゲットを作成します。

  3. GitHub リポジトリをローカルシステムにクローンします。

    git clone https://github.com/kubernetes-sigs/aws-efs-csi-driver.git
  4. encryption_in_transit の例があるディレクトリに移動します。

    cd aws-efs-csi-driver/examples/kubernetes/encryption_in_transit/
  5. Amazon EFS ファイルシステム ID を取得するには、次の describe-file-systems コマンドを実行します。

    aws efs describe-file-systems --query "FileSystems[*].FileSystemId" --output text
  6. /examples/kubernetes/encryption_in_transit/specs/ ディレクトリにある pv.yaml ファイルを開きます。次に、VolumeHandle の値を、マウントしている Amazon EFS ファイルシステムの FileSystemId に置き換えます。
    pv.yaml ファイルは次のようになります。

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: efs-pv
    spec:
      capacity:
        storage: 5Gi
      volumeMode: Filesystem
      accessModes:
        - ReadWriteOnce
      persistentVolumeReclaimPolicy: Retain
      storageClassName: efs-sc
      csi:
        driver: efs.csi.aws.com
        volumeHandle: FileSystemId
        volumeAttributes:
          encryptInTransit: "true"

    注: FileSystemId は Amazon EFS ファイルシステム ID に置き換えてください。volumeAttributes: encryptInTransit マウントオプションにより、転送中の暗号化が有効になります。

  7. /examples/kubernetes/encryption_in_transit/specs/ ディレクトリからストレージクラス、永続ボリュームクレーム、永続ボリューム、ポッドをデプロイします。

    kubectl apply -f specs/storageclass.yaml
    kubectl apply -f specs/pv.yaml
    kubectl apply -f specs/claim.yaml
    kubectl apply -f specs/pod.yaml
  8. ポッドが running 状態であることを確認するには、次のコマンドを実行します。

    kubectl get pods
  9. デフォルト名前空間の永続ボリュームを一覧表示するには、次のコマンドを実行します。

    kubectl get pv
  10. 永続ボリュームを表示するには、次のコマンドを実行します。

kubectl describe pv efs-pv

注: Amazon EFS ファイルシステム ID は VolumeHandle と表示されます。 データが Amazon EFS ファイルシステムに書き込まれていることを確認するには、次のコマンドを実行します。

kubectl exec -ti efs-app -- tail -f /data/out.txt

保管中のデータを暗号化する

注: EFS ファイルシステムを作成した後は、その暗号化設定を変更することはできません。つまり、暗号化されていないファイルシステムを暗号化するように変更することはできません。

保管中のデータを暗号化するには、次の手順を実行します。

  1. Amazon EKS クラスター用の Amazon EFS CSI ドライバーをデプロイします。

  2. 保管中の暗号化を有効にして Amazon EFS ファイルシステムを作成します。
    注: AWS マネジメントコンソールは、AWS Key Management Service (AWS KMS) キーによる保管中の暗号化を自動的に有効にします。AWS CLI と SDK では、暗号化を明示的に有効にする必要があります。

  3. 次の GitHub リポジトリをローカルシステムにクローンします。

    git clone https://github.com/kubernetes-sigs/aws-efs-csi-driver.git
  4. multiple_pods サンプルディレクトリに移動します。

    cd aws-efs-csi-driver/examples/kubernetes/multiple_pods/
  5. Amazon EFS ファイルシステム ID を取得するには、次のコマンドを実行します。

    aws efs describe-file-systems

    出力例:

    {
      "FileSystems": [
        {
          "SizeInBytes": {
            "Timestamp": **timestamp**,
            "Value": **value**
          },
          "ThroughputMode": "**throughput-mode**",
          "CreationToken": "**creation-token**",
          "Encrypted": true,
          "CreationTime": **creation-time**,
          "PerformanceMode": "**performance-mode**",
          "FileSystemId": "**file-system-id**",
          "NumberOfMountTargets": **number**,
          "LifeCycleState": "available",
          "KmsKeyId": "arn:aws:kms:ap-southeast-1:**account-id**:key/**key-id**",
          "OwnerId": "**owner-id**"
        }
      ]
    }
  6. /examples/kubernetes/multiple_pods/specs/ ディレクトリにある pv.yaml ファイルを開きます。次に、volumeHandle の値を、マウントしている Amazon EFS ファイルシステムの FileSystemId に置き換えます。
    pv.yaml ファイルは次のようになります。

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: efs-pv
    spec:
      capacity:
        storage: 5Gi
      volumeMode: Filesystem
      accessModes:
        - ReadWriteMany
      persistentVolumeReclaimPolicy: Retain
      storageClassName: efs-sc
      csi:
        driver: efs.csi.aws.com
        volumeHandle: FileSystemId

    注: FileSystemId は Amazon EFS ファイルシステム ID に置き換えてください。

  7.  /examples/kubernetes/multiple_pods/specs/ ディレクトリからストレージクラス、永続ボリュームクレーム、永続ボリューム、ポッドをデプロイします。

    kubectl apply -f specs/storageclass.yaml
    kubectl apply -f specs/pv.yaml
    kubectl apply -f specs/claim.yaml
    kubectl apply -f specs/pod1.yaml
    kubectl apply -f specs/pod2.yaml
  8. ポッドが running 状態であることを確認するには、次のコマンドを実行します。

    kubectl get pods
  9. デフォルト名前空間の永続ボリュームを一覧表示するには、次のコマンドを実行します。

    kubectl get pv
  10. 永続ボリュームを表示するには、次のコマンドを実行します。

kubectl describe pv efs-pv
  1. データが Amazon EFS ファイルシステムに書き込まれていることを確認するには、次のコマンドを実行します。
kubectl exec -ti app1 -- tail /data/out1.txt
kubectl exec -ti app2 -- tail /data/out1.txt
AWS公式更新しました 4ヶ月前
コメントはありません

関連するコンテンツ