【小ネタ】暗号化された Aurora クラスターのスナップショットの話

記事タイトルとURLをコピーする

こんにちは。テクニカルサポート課の森本です。

お客様からのお問い合わせをいただく中で、Aurora の暗号化されたスナップショットについて調査する機会がありましたのでまとめておきます。

前提

Aurora クラスターは KMS キーを使用して暗号化されます。 暗号化/復号処理は透過的に処理されるため、特にアプリケーション側からは暗号化の有無を意識せず使用することが可能です。

Amazon Aurora の暗号化された DB クラスターでは、業界スタンダードの AES-256 暗号化アルゴリズムを使用して、Amazon Aurora DB クラスターをホストしているデータをサーバーで暗号化します。データが暗号化されると、Amazon Aurora はパフォーマンスの影響を最小限に抑えながら、データへのアクセスと復号の認証を透過的に処理します。暗号化を使用するために、データベースのクライアントアプリケーションを変更する必要はありません。

Amazon Aurora リソースの暗号化 - Amazon Aurora

一般的なアプリケーションの構成においてアプリケーション側から DB インスタンスに接続する際、KMS キーへのアクセス権限を意識する必要はありません。

KMS キーへのアクセス権限を意識する場面

普段意識しない KMS キーのアクセス権限は、実際にはどの場面で意識する必要があるのでしょうか。様々あると思いますが、今回はスナップショットの作成時と復元時にフォーカスして検証を行いました。

Aurora クラスターのスナップショットを取得する際

暗号化されたクラスターから取得するスナップショットは、クラスターを暗号化している KMS キーと同じ KMS キーを使用して暗号化されます。 この際、スナップショットを取得する IAMユーザ/ロール に当該 KMS キーへのアクセス権限が必要なように見えるかもしれません。

暗号化された DB クラスターのスナップショットは、DB クラスターと同じ KMS キーを使用して暗号化する必要があります。

Amazon Aurora リソースの暗号化 - Amazon Aurora

しかし実際のところ、暗号化された Aurora クラスターから暗号化されたスナップショットを取得する際、暗号化を行なっている KMS キーへのアクセス権限は不要です。

以下のようなキーポリシー、IAM ポリシーを付与した状態でスナップショットの取得を行なっても、成功することを確認しています。

KMSキーポリシー(一部抜粋)
キーの管理者と AWS サービス 以外からのアクセスを全て拒否します。

{
      "Sid": "Deny actions except AdminRole",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "kms:*",
      "Resource": "*",
      "Condition": {
        "StringNotEquals": {
          "aws:PrincipalArn": "arn:aws:iam::xxxxxxxxxxxx:user/administrator"
        },
        "BoolIfExists": {
          "aws:PrincipalIsAWSService": "false"
        }
      }
    }

IAM ポリシー
上述のキー管理者以外のIAMロールに設定します。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:Describe*",
                "rds:Describe*",
                "rds:List*",
                "rds:CreateDBSnapshot",
                "rds:CreateDBClusterSnapshot",
                "rds:ModifyDBInstance",
                "rds:ModifyDBCluster",
                "rds:ModifyDBParameterGroup",
                "rds:ModifyDBClusterParameterGroup",
                "rds:ModifyOptionGroup",
                "rds:RebootDBInstance",
                "rds:RestoreDBInstanceFromDBSnapshot",
                "rds:RestoreDBInstanceToPointInTime",
                "rds:RestoreDBClusterFromSnapshot",
                "rds:RestoreDBClusterToPointInTime"
            ],
            "Resource": "*"
        }
    ]
}
スナップショットから Aurora クラスターを復元する際

上述の手順で取得されたクラスターから Aurora クラスターを復元する際は、スナップショットを暗号化している KMS キーへのアクセス権限は必須です。 権限が不足する場合はクラスターの復元処理を行うことができません。

そのため、クラスターの復元を行うことができない = クラスター内のデータも閲覧することができないとなることから、万が一何らかの原因でスナップショットが流出した際であっても KMS キーへのアクセス権限により、データが保全されることが期待されます。

まとめ

今回は、「スナップショットの取得時にKMSキーへのアクセス権は必要なの?」というお客様からのお問い合わせに起因して調査した内容をまとめました。 結論として、スナップショットの取得時には不要なものの、復元時には必要となることがわかりました。

この記事がどなたかのお役に立てば幸いです。

森本 晃大(執筆記事の一覧)

テクニカルサポート課

2023年10月入社。絶賛仕事と子育てに奔走中です。