CodeCommit 리포지토리에 특정 IP 주소만 액세스할 수 있는 방법

소개



CodeCommit에서 git 관리할 때 어떤 IP 주소에서도 커밋할 수 있으면 사용자 이름과 비밀번호가 유출된 경우 리포지토리에 액세스할 수 있으므로 특정 IP 주소만 사용할 수 있도록 IAM 역할을 설정합니다. 합니다.

CodeCommit 설정



아래의 기사를 참고로 리포지토리를 git clone 할 수 있는 곳까지 진행합니다.
한 곳에 변경 사항이 있으며 IAM 역할은 AWSCodeCommitPowerUser를 사용합니다.

CodeCommit을 HTTPS 및 암호 인증으로 사용 설정

IAM 정책에 IP 제한 적용



IP 제한을 적용하는 방법은 AWSCodeCommitPowerUser의 정책 내용을 기반으로 IP 제한을 적용한 정책을 새로 만들고 커밋 사용자에게 연결하는 것입니다.

새 정책을 만듭니다.
만들기 화면에서 管理ポリシーのインポート 를 클릭하고 AWSCodeCommitPowerUser 관리 정책을 インポート 합니다.



CodeCommit의 リクエスト条件를 클릭하면 送信元IP 열이 있으므로 거기에 나열된 IP 주소 만 git 관리 할 수 ​​있습니다.

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 (으)로 합니다.


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 문서

좋은 웹페이지 즐겨찾기