Closed5

AMIなどで意図しない共有がされているリソースのリスト方法

chittaichittai

AMIやEBS Snapshotは共有する側の意思で勝手に共有することができてしまう。これを検知する方法がないため、まずは定期的にリストを確認して棚卸しをする運用とするのがよい?

そのために必要なリソースのリスト方法を確認する。

chittaichittai

AMIの確認方法。PublicはイメージパーミッションをPublicにされた時点で表示されるため防ぎ用がない。そのため、意図した共有(Privateでアカウントにアクセス許可を与える方法)のリストを対象とする。確認は下記コマンドで可能。

  • --executable-users self は自分が明示的な起動許可を持つAMIの一覧(自己所有のAMIは表示されない)
  • --queryとか--output textで表示を整えている
  • --queryでOwnerIdを表示するようにして、意図された共有をしているアカウントだけ除外する。そうすると、意図しないアカウントから共有されているリソースだけ残る
aws ec2 describe-images --executable-users self --query 'Images[*].[ImageId,Name,OwnerId]' --output text | grep -v <除外するアカウントID>
chittaichittai

同じように、EBS SnapshotとRDS Snapshot

  • EBS
aws ec2 describe-snapshots --restorable-by-user-ids self --query 'Snapshots[*].[SnapshotId,OwnerId]' --output text | grep -v <除外するアカウントID>
  • RDS
aws rds describe-db-cluster-snapshots --include-shared --snapshot-type shared --query 'DBClusterSnapshots[*].[DBClusterSnapshotArn]' --output text | grep -v  <除外するアカウントID>
chittaichittai

指定のOwnerIdを持つAMI以外は起動できないようにする

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Deny",
            "Action": "ec2:RunInstances",
            "Resource": "arn:aws:ec2:*::image/*",
            "Condition": {
                "ForAnyValue:StringNotEquals": {
                    "ec2:Owner": "amazon,xxxx"
                }
            }
        }
    ]
}
chittaichittai

指定のSnapshotからVolume作成を制御する方法

これで出来ると思うのだが、アカウントの指定がうまくいかない....

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Deny",
            "Action": "ec2:CreateVolume",
            "Resource": "*",
            "Condition": {
                "ForAnyValue:ArnEquals": {
                    "ec2:ParentSnapshot": "arn:aws:ec2:*:accountID:snapshot/*"
                }
            }
        }
    ]
}
  • アカウントIDを入れると作成できてしまう。

そもそも形式として、arn:aws:region::snapshot/snapshot-idなので、アカウントIDによる制限はできない

アカウント指定じゃなければ出来る

このスクラップは2021/03/18にクローズされました