はじめに
S3やストレージの暗号化の際に利用できるAWS KMSというサービスがあります。
キーのタイプとして、AWSが作ったAWSマネージドキーと、自分で作るカスタマーマネージドキーがあります。
今回はカスタマーマネージドキーでEC2のストレージを暗号化する際に、キー使用の権限で勘違いしていたことがあったので、記事にしました。
概要
- カスタマーマネージドキー作成の際に、使用するユーザー・ロールを指定してキーポリシーに追加できる。
- キーポリシーでユーザー・ロールを指定しなくても、IAM側で対象のキーを使用できる権限があれば使える。
- 正確には、キーポリシーに IAMで許可されたら使える設定 がデフォルトで入っている。
- IAM側で使用可を明示していなくても、キーポリシーに指定すれば使える。
- IAM側で明示的に拒否されていると、キーポリシーに入れても使えない。
参考
困ったこと
EC2のストレージを暗号化するために、以下のキーを作りました。
ただし、キーポリシーで使用できるユーザを誰も指定していません。
これを使って、ストレージを暗号化したEC2を作ってみます。キーポリシーで誰も指定していないから、失敗すると思っていました。
キーの効果がないのかな、と思い、キーを無効にして、起動を試みました。
保留中にはなるのですが、すぐに停止済みになってしまいます。起動に失敗するということは、暗号化したストレージを復号できないということなので、ちゃんとキーを用いて暗号化しているようです。
キーを再度有効にすると、ちゃんと起動します。
キーポリシーになにも指定していないのに、なぜ暗号化できるのか、わかりませんでした。
実際は
参考のページにもありますが、IAMで許可されたら使える設定になっていました。
試す
ではIAMでKMSの操作を持たないたユーザーを作って試してみます。
Resources:
MyIAMUser:
Type: AWS::IAM::User
Properties:
LoginProfile:
Password: myP@ssW0rd
ManagedPolicyArns:
- arn:aws:iam::aws:policy/AmazonEC2FullAccess
このユーザーで、先ほどのEC2を停止->開始を試みてみます。
KMSが使えないので、起動できません。
なお以下のように、IAMポリシーで明確に拒否されていると、キーポリシーに追加しても起動できませんでした。
Resources:
MyIAMUser:
Type: AWS::IAM::User
Properties:
LoginProfile:
Password: myP@ssW0rd
ManagedPolicyArns:
- arn:aws:iam::aws:policy/PowerUserAccess
Policies:
- PolicyName: denyKms
PolicyDocument:
Statement:
- Effect: Deny
Action:
- kms:*
Resource: '*'
おわりに
今回はKMSでの暗号化で、自分の理解不足を記事にしました。
AWS認定のSCSの範囲とのことですので、次はSCSの取得を目指そうと思います。
この記事がどなたかのお役に立てれば幸いです。