본문 바로가기
CSP (Cloud Service Provider)/AWS

AWS 콘솔 접근 가능한 IP 제한

by BTC_홍대동무 2023. 6. 12.

베하 안녕하세요 ~~! BTC_현상수배범입니다.

이번 시간에는 IAM 정책을 활용하여 AWS 콘솔 접근 가능한 IP를 제한해보도록 하겠습니다.

 

보안 강화를 위해 특정 IP 또는 대역만 AWS Console 접근 허용 하는 방법으로 다음과 같은 작업순서로 진행해보도록 하겠습니다.

 

1. MFA 정책 생성 및 설정

2. Access 정책 생성 

3. 정책 연결 및 접근 확인

 

1. MFA 정책 생성 ( MFA 디바이스 등록 없이 콘솔 확인 불가능 )

 참고 : https://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/reference_policies_examples_aws_my-sec-creds-self-manage.html

1-1) 정책 생성
IAM -> 정책 -> 정책생성에서 정책편집기 JSON을 선택하여  정책 내용(MFA-Policy.txt)을 붙여넣은 후 정책을 생성해줍니다.

MFA-Policy.txt

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowAllUsersToListAccounts",
            "Effect": "Allow",
            "Action": [
                "iam:ListAccountAliases",
                "iam:ListUsers",
                "iam:ListVirtualMFADevices",
                "iam:GetAccountPasswordPolicy",
                "iam:GetAccountSummary"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowIndividualUserToSeeAndManageOnlyTheirOwnAccountInformation",
            "Effect": "Allow",
            "Action": [
                "iam:ChangePassword",
                "iam:CreateAccessKey",
                "iam:CreateLoginProfile",
                "iam:DeleteAccessKey",
                "iam:DeleteLoginProfile",
                "iam:GetLoginProfile",
                "iam:ListAccessKeys",
                "iam:UpdateAccessKey",
                "iam:UpdateLoginProfile",
                "iam:ListSigningCertificates",
                "iam:DeleteSigningCertificate",
                "iam:UpdateSigningCertificate",
                "iam:UploadSigningCertificate",
                "iam:ListSSHPublicKeys",
                "iam:GetSSHPublicKey",
                "iam:DeleteSSHPublicKey",
                "iam:UpdateSSHPublicKey",
                "iam:UploadSSHPublicKey"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        },
        {
            "Sid": "AllowIndividualUserToListOnlyTheirOwnMFA",
            "Effect": "Allow",
            "Action": [
                "iam:ListMFADevices"
            ],
            "Resource": [
                "arn:aws:iam::*:mfa/*",
                "arn:aws:iam::*:user/${aws:username}"
            ]
        },
        {
            "Sid": "AllowIndividualUserToManageTheirOwnMFA",
            "Effect": "Allow",
            "Action": [
                "iam:CreateVirtualMFADevice",
                "iam:DeleteVirtualMFADevice",
                "iam:EnableMFADevice",
                "iam:ResyncMFADevice"
            ],
            "Resource": [
                "arn:aws:iam::*:mfa/${aws:username}",
                "arn:aws:iam::*:user/${aws:username}"
            ]
        },
        {
            "Sid": "AllowIndividualUserToDeactivateOnlyTheirOwnMFAOnlyWhenUsingMFA",
            "Effect": "Allow",
            "Action": [
                "iam:DeactivateMFADevice"
            ],
            "Resource": [
                "arn:aws:iam::*:mfa/${aws:username}",
                "arn:aws:iam::*:user/${aws:username}"
            ],
            "Condition": {
                "Bool": {
                    "aws:MultiFactorAuthPresent": "true"
                }
            }
        },
        {
            "Sid": "BlockMostAccessUnlessSignedInWithMFA",
            "Effect": "Deny",
            "NotAction": [
                "iam:ChangePassword",
                "iam:CreateLoginProfile",
                "iam:CreateVirtualMFADevice",
                "iam:DeleteVirtualMFADevice",
                "iam:ListVirtualMFADevices",
                "iam:EnableMFADevice",
                "iam:ResyncMFADevice",
                "iam:ListAccountAliases",
                "iam:ListUsers",
                "iam:ListSSHPublicKeys",
                "iam:ListAccessKeys",
                "iam:ListServiceSpecificCredentials",
                "iam:ListMFADevices",
                "iam:GetAccountSummary",
                "sts:GetSessionToken"
            ],
            "Resource": "*",
            "Condition": {
                "BoolIfExists": {
                    "aws:MultiFactorAuthPresent": "false"
                }

 

 

2. Access Policy 생성

 

2-1) 정책 생성 
IAM -> 정책 -> 정책생성에서 정책편집기 JSON을 선택하여 정책 내용(Access-Policy.txt)을 붙여넣은 후 정책을 생성해줍니다.

Access-Policy.txt

--------------------------------
                    "aws:SourceIp": [
                        "0.0.0.0/32" 콘솔 접근 제한하려는 IP로 수정: )

 

--------------------------------
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Deny",
            "Action": "*",
            "Resource": "*",
            "Condition": {
                "NotIpAddress": {
                    "aws:SourceIp": [
                        "0.0.0.0/32"
                    ]
                },
                "BoolIfExists": {
                    "aws:MultiFactorAuthPresent": "true",
                    "aws:ViaAWSService": "false"
                }
            }
        }
    ]
}

 

3. 정책 연결 및 접근 확인 ( MFA / Access Policy 적용 )
3-1) 이전에 만들었던 MFA/Access Policy 정책을 연결해줍니다.

 
3-2)Test
허용 된 아이피로 접근 후 리소스 확인하였을 시  IAM 정책 등 계정 확인이 가능합니다.
(IAM 정책 등 계정 확인 가능 )

허용이 안된 아이피로 접근 후 리소스 확인하였을 시  IAM 정책 등 계정 확인이 불가능합니다.

 
위의 방법을 순서대로 진행하시면  MFA와 더불어 특정 IP만 허용 및 보안 강화를 할 수 있습니다.
 

다음에 또 만나요 ~~ 베빠~! 

 

 

 

 

 

'CSP (Cloud Service Provider) > AWS' 카테고리의 다른 글

[AWS] SQS (Simple Queue Service)  (0) 2023.06.14
eks addon ADOT란?  (0) 2023.06.12
[AWS] AWS Glue  (1) 2023.06.09
[AWS] Site-to-Site VPN  (0) 2023.06.09
[AWS] Direct Connect  (0) 2023.06.09

댓글