LoginSignup
3
5

More than 1 year has passed since last update.

CodeCommitのリポジトリを特定のIPアドレスのみアクセス許可する方法

Last updated at Posted at 2021-10-23

はじめに

CodeCommitでgit管理する際、どのIPアドレスでもコミットできると、ユーザー名とパスワードが漏れた場合、リポジトリがアクセスされる可能性がありますので、特定のIPアドレスのみが使用できるようにIAMロールを設定します。

CodeCommitのセットアップ

下記の記事を参考に、リポジトリをgit cloneできるところまで進めます。
一箇所変更点があり、IAMロールは、AWSCodeCommitPowerUserを使用しています。

CodeCommitをHTTPSとパスワード認証で使いセットアップする

IAMポリシーにIP制限をかける

IP制限をかける方法は、AWSCodeCommitPowerUserのポリシー内容をベースに、IP制限をかけたポリシーを新たに作成し、commitユーザーにアタッチするだけです。

新しくポリシーを作成します。
作成画面から、管理ポリシーのインポートをクリックし、AWSCodeCommitPowerUser管理ポリシーをインポートします。

スクリーンショット 2021-10-23 18.38.43.png
スクリーンショット 2021-10-23 18.39.29.png
CodeCommitのリクエスト条件をクリックすると、送信元IP欄がありますので、そこに記載したIPアドレスのみがgit管理できるようになります。
スクリーンショット 2021-10-23 18.42.32.png
jsonタブに切り替えると、"aws:SourceIp": "111.111.111.111/32"と、IP制限できていることが分かりました。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "codecommit:ListRepositoriesForApprovalRuleTemplate",
                "codecommit:CreateApprovalRuleTemplate",
                "codecommit:UpdateApprovalRuleTemplateName",
                "codecommit:GetApprovalRuleTemplate",
                "codecommit:ListApprovalRuleTemplates",
                "codecommit:ListRepositories",
                "codecommit:UpdateApprovalRuleTemplateContent",
                "codecommit:UpdateApprovalRuleTemplateDescription"
            ],
            "Resource": "*",
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": "111.111.111.111/32"
                }
            }
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": [
                "codecommit:Merge*",
                "codecommit:Get*",
                "codecommit:TagResource",
                "codecommit:BatchAssociateApprovalRuleTemplateWithRepositories",
                "codecommit:BatchGet*",
                "codecommit:GitPull",
                "codecommit:UntagResource",
                "codecommit:BatchDisassociateApprovalRuleTemplateFromRepositories",
                "codecommit:Update*",
                "codecommit:OverridePullRequestApprovalRules",
                "codecommit:Post*",
                "codecommit:EvaluatePullRequestApprovalRules",
                "codecommit:Test*",
                "codecommit:Create*",
                "codecommit:List*",
                "codecommit:DisassociateApprovalRuleTemplateFromRepository",
                "codecommit:Describe*",
                "codecommit:Put*",
                "codecommit:GitPush",
                "codecommit:DeleteFile",
                "codecommit:BatchDescribe*",
                "codecommit:AssociateApprovalRuleTemplateWithRepository",
                "codecommit:DeleteBranch"
            ],
            "Resource": "arn:aws:codecommit:ap-northeast-1:161750041531:wordpress",
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": "111.111.111.111/32"
                }
            }
        },
        # 以下省略

リソースを制限

ちなみにIAMポリシーに、使用できるリポジトリを制限するとよりセキュリティー面が保たれます。
リソースをクリックし、ARNを追加をクリックし、必要な情報を入力するだけです。
アクセスできるリポジトリは、wordpressとします。
スクリーンショット 2021-10-23 19.03.49.png
スクリーンショット 2021-10-23 19.03.23.png
jsonの内容はこのようになりました。CodeCommitのアクション内容には一部、リソースが絞れないものもあるようですね。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "codecommit:ListRepositoriesForApprovalRuleTemplate",
                "codecommit:CreateApprovalRuleTemplate",
                "codecommit:UpdateApprovalRuleTemplateName",
                "codecommit:GetApprovalRuleTemplate",
                "codecommit:ListApprovalRuleTemplates",
                "codecommit:ListRepositories",
                "codecommit:UpdateApprovalRuleTemplateContent",
                "codecommit:UpdateApprovalRuleTemplateDescription"
            ],
            "Resource": "*",
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": "111.111.111.111/32"
                }
            }
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": [
                "codecommit:Merge*",
                "codecommit:Get*",
                "codecommit:TagResource",
                "codecommit:BatchAssociateApprovalRuleTemplateWithRepositories",
                "codecommit:BatchGet*",
                "codecommit:GitPull",
                "codecommit:UntagResource",
                "codecommit:BatchDisassociateApprovalRuleTemplateFromRepositories",
                "codecommit:Update*",
                "codecommit:OverridePullRequestApprovalRules",
                "codecommit:Post*",
                "codecommit:EvaluatePullRequestApprovalRules",
                "codecommit:Test*",
                "codecommit:Create*",
                "codecommit:List*",
                "codecommit:DisassociateApprovalRuleTemplateFromRepository",
                "codecommit:Describe*",
                "codecommit:Put*",
                "codecommit:GitPush",
                "codecommit:DeleteFile",
                "codecommit:BatchDescribe*",
                "codecommit:AssociateApprovalRuleTemplateWithRepository",
                "codecommit:DeleteBranch"
            ],
            "Resource": "arn:aws:codecommit:ap-northeast-1:xxxxxxxxx:wordpress",
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": "111.111.111.111/32"
                }
            }
        },
        # 以下省略

そして、IAMポリシーの作成をクリックします。

あとは、作成したポリシーをCodeCommitユーザーにアタッチするだけです。
これによって、作成したポリシーをアタッチしたCodeCommitユーザーは、IPアドレスが111.111.111.111/32だった場合に限り、リポジトリ名wordpressのみアクセスできる。
ということになります。

参考

CodeCommitへのアクセスをIPアドレスで制限

AWS AWS CodeCommitドキュメント

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5