AWS Media Servicesに対して参照権限のみを持つIAMポリシー

はじめに

清水です。AWSリソースに対して参照権限のみを与えたいIAMユーザ/IAMロールに対して、AWS管理ポリシーの「ReadOnlyAccess」を使用するケースがあるかと思います。AWS Media Servicesの各サービスのリソースを参照しようとした場合、多くはこの「ReadOnlyAccess」だけでは不十分で、リソースを参照することができません。AWS Media Servicesに対して参照権限を持つポリシーを作成して「ReadOnlyAccess」とあわせて適用することで、AWS Media Servicesについてもリソースが参照できるようにしてみました。

ReadOnlyAccessだけでAWS Media Servicesにアクセスした場合

以下のようなAWS管理ポリシー「ReadOnlyAccess」のみをアタッチしたIAMユーザ(ReadOnlyUser)で、例えばMediaLiveのマネージメントコンソールにアクセスしてみます。(MediaLiveにはいくつかリソースが存在しています。)

以下のようにアクセス権限がない旨の警告が表示され、リソースの参照ができません。

MediaConvertについてはリソースが参照できるようです。

AWS管理ポリシーの「ReadOnlyAccess」の内容を確認すると原因がわかるのですが、以下のようにAWS Media ServicesについてはMediaConvertとMediaPackageの一部の機能しか権限がありません。(2019/09/30時点の内容です。管理ポリシーのアップデートで追加されればよいのですが。)

対策として、他のAWS Media Servicesの権限を別途IAMロール/IAMユーザにポリシーとして追加してみました。

MediaServicesReadOnlyAccessポリシー

ということで、AWS Media Servicesに対する参照権限を作成してみます。具体的には以下IAMのポリシーリファレンスを参考に、各サービスにおけるDescribe*/Get*/List*のアクションを集めてきました。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "mediaconnect:Describe*",
                "mediaconnect:List*",
                "mediaconvert:Describe*",
                "mediaconvert:Get*",
                "mediaconvert:List*",
                "medialive:Describe*",
                "medialive:List*",
                "mediapackage:Describe*",
                "mediapackage:List*",
                "mediapackage-vod:Describe*",
                "mediapackage-vod:List*",
                "mediastore:Describe*",
                "mediastore:Get*",
                "mediastore:List*",
                "mediatailor:Get*",
                "mediatailor:List*"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}

この内容でユーザ管理ポリシーを作成してIAMユーザ/IAMロールにアタッチします。またはインラインポリシーとして追加することもできます。

実際に、先ほどのReadOnlyUserにこの内容をインラインポリシーとして追加してみます。

今度はMediaLiveのリソースが参照できました。同様に他AWS Media Servicesの各サービスも参照することができます。

まとめ

AWS Media ServicesのすべてにはAWS管理ポリシー「ReadOnlyAccess」でアクセスできなかったため、各サービスの参照系アクションをまとめてポリシーを作成、参照できるようにしてみました。