kdnakt blog

hello there.

AWS IAMのマネージドポリシーAWSCodePipelineReadOnlyAccessが非推奨になる

先日、AWSから以下のタイトルのメールを受け取ったので、関連して調べたことをまとめておく*1

AWS Codepipeline is deprecating its managed policy “AWSCodePipelineReadOnlyAccess” [AWS Account: XXXXXXXXXXXX]

 

 

[変更の概要] 

AWSからのメールを受け取ったのはちょうど2020年9月3日の朝だった。

要約すると、本文には次のことが書かれていた。

 

  • IAMのマネージドポリシー「AWSCodePipelineReadOnlyAccess」が2020年9月7日で非推奨となる
  • 新しいマネージドポリシーとして「AWSCodePipeline_ReadOnlyAccess」が利用できるが、権限が削減されている
  • 既存のIAM Roleは影響を受けないが、新しくIAM Roleに非推奨のポリシーはアタッチできない

 

ReadOnlyな権限が変更になるだけで、既存のIAM Roleは影響を受けないので急ぎ対応をする必要はなさそうだったが、一応変更の詳細を調べてみることにした。

 

[変更の詳細]

 IAM Consoleにログインし、対象のポリシーを検索してみる。

f:id:kidani_a:20200905234211p:plain

 

たしかに、アンダースコアのないポリシーとアンダースコアのあるポリシーの両方を確認できる。

 

このままでは比較しづらいので、Jsonをコピペして手元の端末に保存し、VS Codeで比較してみた*2

f:id:kidani_a:20200905234936p:plain

 

左側が新しく追加されたアンダースコアありのポリシーで、右側が今回非推奨になるアンダースコアなしのポリシーである。

 

まず、最初のステートメントから以下のアクションが削除されている。

  • iam:ListRoles
  • s3:GetBucketPolicy
  • s3:GetObject
  • s3:ListBucket
  • codecommit:ListBranches
  • codecommit:ListRepositories
  • codedeploy:GetApplication
  • codedeploy:GetDeploymentGroup
  • codedeploy:ListApplications
  • codedeploy:ListDeploymentGroups
  • elasticbeanstalk:DescribeApplications
  • elasticbeanstalk:DescribeEnvironments
  • lambda:GetFunctionConfiguration
  • lambda:ListFunctions
  • opsworks:DescribeApps
  • opsworks:DescribeLayers
  • opsworks:DescribeStacks

 

IAM、CodeCommit、CodeDeploy、Elastic Beanstalk、Lambda、OpsWorksの参照権限が削除されたことになる。

 

また、上記の削除されたアクションのうち、s3:GetObjects3:ListBuckets3:GetBucketPolicyの3つのS3関連アクションは、独立したステートメントに分離され、codepipeline-で始まるS3バケットにのみアクセスできるように制限が追加されている。

 

[代替となるマネージドポリシー]

利用できるアクションがかなり増えるが、OpsWorks以外のそれぞれのサービスについて、ReadOnlyと名前のついた以下のマネージドポリシーを代替として利用できる。不要なアクションが含まれている場合は、削除されたアクションのみを独自でインラインポリシーなどで追加することもできる。

 

IAMの場合は、IAMReadOnlyAccessポリシーを利用できる。

f:id:kidani_a:20200906000244p:plain

 

CodeCommitの場合は、AWSCodeCommitReadOnlyポリシーを利用できる。

f:id:kidani_a:20200906000638p:plain

 

CodeDeployの場合は、AWSCodeDeployReadOnlyAccessポリシーを利用できる。

f:id:kidani_a:20200906000824p:plain

  

Elastic Beanstalkの場合は、AWSElasticBeanstalkReadOnlyAccessポリシーを利用できる。

f:id:kidani_a:20200906000936p:plain

 

なお、OpsWorksについてはReadOnlyなマネージドポリシーが提供されていないようだった。こちらのアクションが必要となる場合は、個別にポリシーを自作するのが良さそうだ。

 

[まとめ]

  • マネージドポリシーAWSCodePipelineReadOnlyAccessが非推奨になる(2020年9月7日)
  • 新しいポリシーAWSCodePipeline_ReadOnlyAccessが提供されているが、IAM、CodeCommit、CodeDeploy、Elastic Beanstalk、Lambda、OpsWorksの参照権限が削除されている
  • また、新しいポリシーではcodepipeline-で始まるS3バケットのみ参照可能という制限が追加されている

*1:本記事の情報はすべて2020年9月5日時点のものである。

*2:オンラインのJson比較ツールをいくつか試したが、わかりやすく差分を表示してくれるものを見つけられなかった。結局慣れているツールが一番……。