AWS CodeCommitで特定のリポジトリにだけにアクセスできるPolicyを作りたかった

2 min read読了の目安(約2000字

地味に大変だったのでメモ・・・。社内に公開していたものを、zennでも公開。

結論

CodeCommit承認ルールをいじらせたくない場合

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "codecommit:DeleteRepository"
            ],
            "Resource": "*",
            "Effect": "Deny"
        },
        {
            "Action": [
                "codecommit:List*"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "codecommit:*ApprovalRule*"
            ],
            "Resource": "*",
            "Effect": "Deny"
        },
        {
            "Action": [
                "codecommit:*"
            ],
            "Resource": "arn:aws:codecommit:ap-northeast-1:えいだぶるえすあかうんとあいでぃ:りぽじとりめい",
            "Effect": "Allow"
        }
    ]
}

CodeCommit承認ルールをいじらせても良い場合

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "codecommit:DeleteRepository"
            ],
            "Resource": "*",
            "Effect": "Deny"
        },
        {
            "Action": [
                "codecommit:List*",
                "codecommit:*ApprovalRule*"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "codecommit:*"
            ],
            "Resource": "arn:aws:codecommit:ap-northeast-1:えいだぶるえすあかうんとあいでぃ:りぽじとりめい",
            "Effect": "Allow"
        }
    ]
}

結果

というか、AWS Web Consoleで特定のユーザーでログインした時の様子

権限を持っているリポジトリだけ様子が伺える。

説明

Action codecommit:ListRepositoriesは、Resource * しか受け付けない。codecommit:ListRepositoriesだけResource *にしてもよかったが、Web Consoleで変なエラーが出て、利用者から照会があると嫌なのでcodecommit:List*を指定。
最近追加されたCodeCommit承認ルールの操作 codecommit:*ApprovalRule*は、Resource * しか受け付けないので、いじりたさそうなプロジェクトのリポジトリは、Allowにして、絶対使わさそうなリポジトリはDenyにしておいた。

参考

https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/list_awscodecommit.html#awscodecommit-repository