CodeDeployに必要な権限を開発者用IAMアカウントに与える

2016.01.25

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

渡辺です。

IAMで必要最低限の権限をもつPolicy Documentを作成するのは意外と面倒です。 というわけで、コピペで利用できるPolicy Documentのスニペットをお届けします。

開発環境へのデプロイ権限を管理する

開発と運用が別れていない自社サービスでは気にすることはありませんが、開発と運用が別れている場合、開発ベンダ用のIAMアカウントに必要以上の権限を与えない方が好ましいです。 開発ベンダ側としても強力な権限を持たされるリスクを嫌うでしょう。 例えば、開発ベンダには開発環境やステージング環境へのデプロイは出来ても、プロダクション環境へのデプロイ許可は与えないとう設定が出来ればお互いにシアワセになります。

CodeDeployを使えば、デプロイを自動化できるだけでなく、こういった権限も管理しやすくなります。

CodeDeployのアプリケーションを定義する

CodeDeployの「アプリケーション」とはデプロイ対象システムを抽象化した概念です。 アプリケーションにデプロイグループを作り、リビジョンという単位でシステムは管理されることになります。

アプリケーションを環境毎に作成しましょう。 例えば、開発環境・ステージング環境・プロダクション環境にそれぞれ「app_development」「app_staging」「app_production」という3つのアプリケーションを作成します。

開発環境のみにデプロイ可能な権限を設定する

というわけで、特定アプリケーションに制限してCodeDeployを許可するPolicy Documentです。 ポイントは参照系であるListXxxとGetXxxアクションは全体に許可し、特定のアプリケーションに対して全操作権限を与えているところです。 開発者用のグループなどを作成し、許可を与えて利用してください。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codedeploy:Get*",
                "codedeploy:BatchGet*",
                "codedeploy:List*"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "codedeploy:*"
            ],
            "Resource": [
                "arn:aws:codedeploy:ap-northeast-1:000000000000:application:APP_NAME",
                "arn:aws:codedeploy:ap-northeast-1: 000000000000:deploymentgroup:APP_NAME/*"
                
            ]
        }
    ]
}

リソースのarn("arn:aws:codedeploy:ap-northeast-1:000000000000:application:APP_NAME)は、リージョン・AWSアカウントID・アプリケーション名をの部分を適宜書き換えてご利用ください。

まとめ

IAMで必要最小限の権限を付与することで、潜在的なリスクを軽減しましょう。