

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 리소스 기반 정책 및 리소스 제어 정책을 사용하여 콘솔 액세스 제어
<a name="console-access-control"></a>

**중요**  
콘솔 로그인 액세스는 기본적으로 활성화됩니다. AWS 로그인은 처음에 무제한 콘솔 액세스를 허용합니다. 제한을 추가하려면 계정 또는 조직에 대한 콘솔 권한 부여 구성을 활성화합니다. 생성하는 리소스 권한 문은 콘솔 권한 부여를 활성화할 때까지 영향을 주지 않습니다. [리소스 정책을 사용하여 콘솔 액세스 제어 시작하기](#console-access-control-getting-started)을(를) 참조하세요.

AWS 로그인은 AWS 로그인에 대한 액세스를 제어하는 리소스 기반 정책 및 리소스 제어 정책(RCPs)을 지원합니다. 이러한 정책을 사용하여 인증 전, 중, 후에 AWS Management Console 액세스 전반에 걸쳐 사용자 자격 증명 및 네트워크 위치를 확인합니다. 루트 사용자의 경우 이러한 정책은 자격 증명 수집이 시작되기 전에 네트워크 위치와 사용자 자격 증명을 검증합니다. 보안 인증은 액세스가 예상 네트워크에서 시작된 경우에만 입력할 수 있습니다.

AWS 로그인 리소스 기반 정책:
+ 개별 AWS 계정에 적용합니다.
+ 계정 관리자가 네트워크 파라미터 및 보안 주체 자격 증명을 기반으로 콘솔 액세스를 제한하도록 합니다.

리소스 제어 정책(RCPs):
+ AWS Organizations를 통해 조직 전체에 적용합니다.
+ 모든 멤버 계정에 중앙 집중식 거버넌스를 제공합니다.

두 정책 유형 모두 인증 전에 액세스를 확인합니다. 이렇게 하면 보안 주체가 예상치 못한 네트워크에서 로그인 페이지에 액세스하지 못하게 됩니다.

이러한 정책은 계속 적용되는 IAM 자격 증명 기반 정책을 대체하지 않습니다.

**참고**  
조직 수준 구성 및 관리를 포함한 리소스 제어 정책에 대한 전체 설명서는 *AWS Organizations 사용 설명서*의 [리소스 제어 정책을](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html) 참조하세요. 이 섹션에서는 주로 AWS 로그인 리소스 기반 정책에 중점을 둡니다.

AWS 로그인 리소스 기반 정책 및 RCPs 다음 인증 방법에 적용됩니다.
+ **AWS Management Console** - 콘솔 로그인 페이지를 사용하여 직접 로그인합니다.
+ **AWS IAM Identity Center** - IAM Identity Center를 사용한 콘솔 로그인.
+ **페더레이션 자격 증명 공급자** - SAML 또는 OIDC 페더레이션을 통해 로그인합니다.
+ ** AWS 로그인과 통합된 애플리케이션 -** Amazon Connect, Amazon QuickSight, AWS Health Dashboard, Amazon AppStream, Amazon Lightsail, AWS IQ.

이러한 제어는 액세스 키(AWS SDKs 또는 SigV4로 서명된 API 호출)를 사용한 프로그래밍 방식 액세스에는 적용되지 않습니다.

## AWS 로그인이 리소스 기반 정책을 평가하는 방법
<a name="console-access-control-how-it-works"></a>

AWS 로그인은 콘솔 액세스 중 인증 전(인증 전 단계)과 인증 성공 후(인증 후 단계)의 두 지점에서 해당 리소스 기반 정책 또는 리소스 제어 정책(RCPs)을 평가합니다. 각 평가는 정책에 정의된 조건 키를 확인합니다. 사용 가능한 키는 단계와 작업에 따라 다릅니다. 자세한 내용은 [지원되는 조건 키](#console-access-control-condition-keys)을 참조하세요.

**참고**  
루트 사용자 로그인의 경우 암호 프롬프트가 나타나기 전에 예기치 않은 네트워크의 액세스 시도가 차단됩니다. 이렇게 하면 예상치 못한 네트워크에서 자격 증명이 제출되지 않습니다.

인증 후 평가는 보안 주체의 자격 증명 기반 정책도 고려합니다. 관련 로그인 작업을 거부하는 IAM 정책은 네트워크 조건이 충족되더라도 콘솔 세션이 부여되지 않도록 할 수 있습니다.

## 지원되는 작업
<a name="console-access-control-supported-actions"></a>

AWS 로그인 리소스 정책(리소스 기반 정책 및 RCPs)은 다음 작업을 지원합니다.

`signin:Authenticate`  
이는 로그인 요청이 수신될 때 평가 전용(호출할 수 없음) 작업입니다. 이는 사전 인증 검사이며 보안 주체가 로그인 페이지에 자격 증명을 입력하거나(루트 사용자, IAM 사용자) 자격 증명 공급자 또는 AWS STS(연동 사용자, 역할)의 자격 증명을 사용하여 콘솔 로그인을 시작할 때 발생합니다.  
**지원되는 조건 키:** `aws:SourceIp`, `aws:SourceVpc`, `aws:SourceVpce`, `aws:VpcSourceIp`, `aws:RequestedRegion`, `signin:PrincipalArn`.  
사용자의 자격 증명이 아직 확인되지 않았으므로이 작업에는 보안 주체 기반 전역 조건 키(`aws:PrincipalArn`, `aws:PrincipalAccount`)를 사용할 수 없습니다.

`signin:AuthorizeOAuth2Access`  
OAuth 권한 부여 코드 생성에 사용됩니다. 인증에 성공하면 시스템이 OAuth 권한 부여 코드를 생성할 때이 작업이 트리거됩니다. 이때 사용자는 인증되고 보안 주체 기반 조건 키를 사용할 수 있습니다.  
**지원되는 조건 키:** `aws:SourceIp`, `aws:SourceVpc`, `aws:SourceVpce`, `aws:VpcSourceIp`, `aws:RequestedRegion`, `aws:PrincipalArn`, `aws:PrincipalAccount`.

`signin:CreateOAuth2Token`  
이 인증 후 작업은 OAuth 토큰 생성 및 교환에 사용됩니다. 이 작업은 액세스 토큰에 대한 권한 부여 코드를 사용하거나, 토큰을 새로 고치거나, 토큰 교환 작업을 수행할 때 트리거됩니다. 이 단계에서는 보안 주체 기반 조건 키를 사용할 수 있습니다.  
**지원되는 조건 키:** `aws:SourceIp`, `aws:SourceVpc`, `aws:SourceVpce`, `aws:VpcSourceIp`, `aws:RequestedRegion`, `aws:PrincipalArn`, `aws:PrincipalAccount`.

**중요**  
 AWS 로그인 정책(리소스 기반 정책 또는 RCPs)`signin:Authenticate`을 생성할 때 정책 전반의 세 가지 작업, 즉 사전 인증 문`signin:AuthorizeOAuth2Access`과 사후 인증 문`signin:CreateOAuth2Token`을 모두 다룹니다. 콘솔 로그인은 세 작업을 순차적으로 모두 통과하는 OAuth 2.0을 사용합니다. 정책에서 작업을 생략하면 해당 단계가 보호되지 않습니다. `signin:CreateAccount`를 포함한 VPC 엔드포인트 정책 작업은 [AWS Management Console 프라이빗 액세스를](https://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/console-private-access.html) 참조하세요.

## 지원되는 조건 키
<a name="console-access-control-condition-keys"></a>

AWS 로그인은 리소스 기반 정책 및 리소스 제어 정책(RCPs)에서 다음과 같은 조건 키를 지원합니다. 다음 키를 사용하여 네트워크 위치 및 보안 주체 자격 증명을 기반으로 콘솔 액세스를 제어합니다.
+ **네트워크 기반(모든 작업):** `aws:SourceIp`, `aws:SourceVpc`, `aws:SourceVpce`, `aws:VpcSourceIp`, `aws:RequestedRegion`.
+ **자격 증명 기반(인증 후 작업):** `aws:PrincipalArn`, `aws:PrincipalAccount`.
+ **서비스별(사전 인증만 해당):** `signin:PrincipalArn`.

자세한 사용 규칙, 연산자 호환성, 조합 제한 및 작업별 가용성 매트릭스는 섹션을 참조하세요[AWS 로그인 조건 키 참조](reference-signin-condition-keys.md).

## 리소스 정책을 사용하여 콘솔 액세스 제어 시작하기
<a name="console-access-control-getting-started"></a>

**사전 조건**
+ AWS CLI 설치 및 구성됨.
+ 적절한 IAM 권한( 참조[AWS 관리형 정책: AWSSignInResourcePolicyManagement](security-iam-awsmanpol.md#security-iam-awsmanpol-AWSSignInResourcePolicyManagement)).
+ 식별된 네트워크 경계(IP 범위, VPCs 또는 VPC 엔드포인트).
+ 액세스를 유지할 지정된 제외 보안 주체(권장하지만 선택 사항).
+ 네트워크에서 송신 필터링을 사용하는 경우 AWS 로그인 컨트롤 플레인 엔드포인트를 허용 목록에 추가합니다( 참조[AWS 허용 목록에 대한 로그인 관리 도메인](allowlist-domains.md#allowlist-domains-admin)).

**중요**  
프로덕션 환경에서 콘솔 인증을 활성화하기 전에는 긴급 복구 액세스를 유지하도록 하나 이상의 제외된 보안 주체를 구성하는 것이 AWS 좋습니다. 명시적으로 제외되지 않는 한 루트 사용자를 포함한 모든 보안 주체는 정책의 적용을 받습니다. 제외된 보안 주체는 선택 사항이지만 네트워크 조건이 예기치 않게 변경되면 보안 주체를 생략하면 계정 잠금 위험이 증가합니다.

 AWS 로그인 정책의 모든 쓰기 작업에 `--region us-east-1` 대해를 지정합니다.는이 리전에서 전역적으로 정책을 AWS 복제합니다. 읽기 작업은 모든 리전을 대상으로 할 수 있습니다.

### 1단계: 리소스 권한 문 생성
<a name="console-access-control-step1-statements"></a>

액세스 제어를 정의하는 권한 문을 생성합니다. 모든 쓰기 작업에는가 필요합니다`--region us-east-1`( AWS 로그인 서비스는이 리전에서만 정책 변경을 수락함). 나머지 파라미터(`--source-vpc`, `--source-ip`, `--requested-region`, `--excluded-principal`)는 정책의 조건을 정의합니다. 예를 들어,는 us-west-2 리전 로그인 엔드포인트에 로그인을 제한하는 조건을 `--requested-region us-west-2` 추가합니다.

**예 - 회사 VPC에 대한 액세스 제한:**

```
aws signin put-resource-permission-statement \
  --source-vpc vpc-0abc123def456789 \
  --requested-region us-west-2 \
  --excluded-principal "arn:aws:iam::123456789012:user/EmergencyAdmin" \
  --client-token unique-request-id-12345 \
  --region us-east-1
```

**예 - 특정 IP 범위에 대한 액세스를 제한합니다.**

```
aws signin put-resource-permission-statement \
  --source-ip "{{IP_ADDRESS}}" \
  --excluded-principal "arn:aws:iam::123456789012:role/BreakGlassRole" \
  --region us-east-1
```

**참고**  
`--excluded-principal` 파라미터는 네트워크 제한을 우회하는 제외된 보안 주체를 지정하여 네트워크 조건이 변경될 경우 긴급 액세스를 유지합니다.

### 2단계: 콘솔 권한 부여 구성 활성화
<a name="console-access-control-step2-enable"></a>

다음 단계에서는 계정 또는 조직의 콘솔 로그인 프로세스에 대한 정책 적용을 활성화합니다. 리소스 권한 문은 언제든지 생성할 수 있지만 콘솔 권한 부여가 활성화될 때까지 평가되지 않습니다.

**주의**  
콘솔 권한 부여를 활성화하면 네트워크 조건이 잘못 구성되거나 기존 서비스 제어 정책(SCP) 또는 리소스 제어 정책(RCP)이 AWS 로그인 작업을 거부하는 경우 보안 주체가 잠길 수 있습니다. 콘솔 인증을 활성화하기 전에 권한 문이 올바른지 확인하고 , 또는 `signin:Authenticate`를 거부하는 SCP 또는 RCP를 제거`signin:AuthorizeOAuth2Access`하거나 조정합니다`signin:CreateOAuth2Token`.

독립 실행형 계정의 경우:

```
aws signin put-console-authorization-configuration \
  --target-id <your-aws-account-id> \
  --region us-east-1
```

AWS Organizations 경우:

```
aws signin put-console-authorization-configuration \
  --target-id <your-aws-organization-id> \
  --region us-east-1
```

구성을 확인합니다.

```
aws signin get-console-authorization-configuration \
  --target-id <your-target-id> \
  --region <your-region>
```

콘솔 권한 부여 구성을 삭제합니다.

```
aws signin delete-console-authorization-configuration \
  --target-id <your-target-id> \
  --region us-east-1
```

### 3단계: 정책 확인
<a name="console-access-control-step3-verify"></a>

모든 권한 설명을 나열합니다.

```
aws signin list-resource-permission-statements \
  --max-results 50 \
  --region <your-region>
```

전체 통합 정책을 검색합니다.

```
aws signin get-resource-policy \
  --region <your-region>
```

`get-resource-policy` 명령은 모든 권한 문으로 구성된 전체 리소스 기반 정책을 반환합니다. 콘솔 액세스를 테스트하기 전에이 정책을 검토하여 의도한 액세스 제어를 반영하는지 확인합니다.

### 리전별 가용성
<a name="console-access-control-regional-availability"></a>

콘솔 권한 부여 APIs 모든 AWS 상용 리전에서 사용할 수 있습니다. 운영하는 모든 리전에서 이러한 APIs 호출할 수 있습니다.

**중요**  
`us-east-1` 리전에서 쓰기 작업(`put-console-authorization-configuration`, `put-resource-permission-statement`, `delete-console-authorization-configuration`, `delete-resource-permission-statement`)을 수행해야 합니다. 에서 생성된 정책은 전역적으로 `us-east-1` 자동으로 복제됩니다. 읽기 작업(`get-console-authorization-configuration`, `list-resource-permission-statements`, `get-resource-policy`)은 모든 리전에서 수행할 수 있습니다.

### 정책 구조 이해
<a name="console-access-control-policy-structure"></a>

AWS 로그인 정책에는 콘솔 로그인 흐름의 다양한 단계를 보호하는 두 개의 문이 포함되어 있습니다.
+ **사전 인증 문(작업: `signin:Authenticate`):** 인증이 완료되기 전에 로그인 요청이 수신될 때 평가됩니다. 보안 주체의 자격 증명`aws:PrincipalArn`이 확인되지 않았기 때문에이 단계에서는 전역 키를 사용할 수 없습니다. 이 단계에서`signin:PrincipalArn`는 네트워크 제한에서 특정 보안 주체를 제외할 수 있습니다. 이 단계에서는 네트워크 기반 조건 키를 평가할 수 있습니다.
+ **인증 후 문(작업: `signin:AuthorizeOAuth2Access`, `signin:CreateOAuth2Token`):** OAuth 토큰 교환 중에 인증 후 평가됩니다. `aws:PrincipalArn`를 사용하여 특정 보안 주체를 제외합니다. 이 단계에서는 모든 네트워크 기반 및 자격 증명 기반 조건 키를 평가할 수 있습니다.

콘솔 로그인은 세 작업을 순차적으로 모두 통과하는 OAuth 2.0을 사용하기 때문에 두 명령문이 모두 필요합니다. 문이 하나뿐인 정책은 다른 단계는 보호되지 않습니다. `signin:PrincipalArn`는 루트 사용자, IAM 사용자 및 역할 보안 주체 유형을 지원합니다.는 모든 보안 주체 유형(루트 사용자, IAM 사용자, 페더레이션 사용자, 역할)을 `aws:PrincipalArn` 지원합니다.

## 정책 예시
<a name="console-access-control-policy-examples"></a>

### 예제 1: 네트워크 경계 및 제외된 보안 주체가 있는 RCP
<a name="console-access-control-example-rcp"></a>

다음 리소스 제어 정책(RCP)은 조직 내 모든 계정의 회사 네트워크 외부에서 AWS Management Console 로그인하는 것을 거부합니다. 지정된 제외 보안 주체는 긴급 액세스에서 제외됩니다. VPC IDs는 리전 내에서만 고유하므로 정책에는 VPC 기반 액세스를 예상 리전에 고정시키는 세 번째 문이 포함됩니다.

`EnforceNetworkPerimeterPreAuth` 문은 `signin:PrincipalArn`를 사용하여 사전 인증 단계에서 제외된 보안 주체를 제외합니다. `EnforceNetworkPerimeterPostAuth` 문은 `aws:PrincipalArn`를 사용하여 인증 후 제외된 보안 주체를 제외합니다. `EnforceSourceVPCRegion` 문은 요청 리전이 VPC 리전과 일치하는지 확인하여 지정된 VPC의 예상 리전에 대한 액세스를 제한합니다.

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "EnforceNetworkPerimeterPreAuth",
      "Effect": "Deny",
      "Principal": "*",
      "Action": ["signin:Authenticate"],
      "Resource": "*",
      "Condition": {
        "ArnNotEquals": {
          "signin:PrincipalArn": [
            "arn:aws:iam::111122223333:root",
            "arn:aws:iam::444455556666:root",
            "arn:aws:iam::777788889999:user/EmergencyUser",
            "arn:aws:iam::777788889999:role/OrgBreakGlassRole"
          ]
        },
        "NotIpAddressIfExists": {
          "aws:SourceIp": "<my-corporate-cidr>"
        },
        "StringNotEquals": {
          "aws:SourceVpc": "<my-vpc>"
        }
      }
    },
    {
      "Sid": "EnforceNetworkPerimeterPostAuth",
      "Effect": "Deny",
      "Principal": "*",
      "Action": ["signin:CreateOAuth2Token", "signin:AuthorizeOAuth2Access"],
      "Resource": "*",
      "Condition": {
        "ArnNotEquals": {
          "aws:PrincipalArn": [
            "arn:aws:iam::111122223333:root",
            "arn:aws:iam::444455556666:root",
            "arn:aws:iam::777788889999:user/EmergencyUser",
            "arn:aws:iam::777788889999:role/OrgBreakGlassRole"
          ]
        },
        "NotIpAddressIfExists": {
          "aws:SourceIp": "<my-corporate-cidr>"
        },
        "StringNotEquals": {
          "aws:SourceVpc": "<my-vpc>"
        }
      }
    },
    {
      "Sid": "EnforceSourceVPCRegion",
      "Effect": "Deny",
      "Principal": "*",
      "Action": [
        "signin:Authenticate",
        "signin:CreateOAuth2Token",
        "signin:AuthorizeOAuth2Access"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:SourceVpc": "<my-vpc>"
        },
        "StringNotEqualsIfExists": {
          "aws:RequestedRegion": "<my-vpc-region>"
        }
      }
    }
  ]
}
```

이 정책은 다음과 같습니다.
+ 요청이 회사 IP 범위 또는 회사 VPC에서 시작되지 않는 한 로그인 페이지에 대한 액세스를 거부합니다. 제외된 루트 계정 및 IAM 사용자는 `signin:PrincipalArn` (사전 인증)을 통해 제외됩니다.
+ 기업 IP 범위 또는 VPC가 아닌 한 OAuth 토큰 교환을 거부합니다. 제외된 루트 계정, IAM 사용자 및 역할은 `aws:PrincipalArn` (인증 후 글로벌 키)를 통해 제외됩니다.
+ 요청이 지정된 VPC에서 왔지만 리전이 일치하지 않는 경우 액세스가 거부됩니다. AWS VPC IDs는 리전 내에서 고유하며 동일한 VPC ID가 다른 리전에 존재할 수 있습니다.
+ RCP로 구성된 경우 AWS 조직 전체에 전역적으로 적용됩니다.

### 예제 2: 제외된 보안 주체가 있는 IP 기반 액세스에 대한 리소스 기반 정책
<a name="console-access-control-example-rbp"></a>

다음 리소스 기반 정책은 지정된 IP 범위 외부에서 요청하는 모든 보안 주체에 대한 콘솔 액세스를 거부하며 제외된 보안 주체는 제외됩니다. 정책에는 서비스별 `signin:PrincipalArn` 키를 사용하는 사전 인증 문과 전역 `aws:PrincipalArn` 키를 사용하는 사후 인증 문이라는 두 가지 문이 포함되어 있습니다.

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Principal": { "AWS": "*" },
      "Action": ["signin:Authenticate"],
      "Resource": "*",
      "Condition": {
        "ArnNotEquals": {
          "signin:PrincipalArn": "<excluded-principal-arn>"
        },
        "NotIpAddress": {
          "aws:SourceIp": "<my-corporate-cidr>"
        },
        "StringEquals": {
          "aws:ResourceAccount": "<my-aws-account-id>"
        }
      }
    },
    {
      "Effect": "Deny",
      "Principal": { "AWS": "*" },
      "Action": ["signin:CreateOAuth2Token", "signin:AuthorizeOAuth2Access"],
      "Resource": "*",
      "Condition": {
        "ArnNotEquals": {
          "aws:PrincipalArn": "<excluded-principal-arn>"
        },
        "NotIpAddress": {
          "aws:SourceIp": "<my-corporate-cidr>"
        },
        "StringEquals": {
          "aws:ResourceAccount": "<my-aws-account-id>"
        }
      }
    }
  ]
}
```

이 정책은 다음과 같습니다.
+ IP 범위에서 연결하지 않는 한 모든 보안 주체에 대한 액세스를 거부합니다`<my-corporate-cidr>`.
+ (사전 인증) 및 `signin:PrincipalArn` (사`aws:PrincipalArn`후 인증)를 사용하여 네트워크 제한에서 제외된 보안 주체를 제외합니다.
+ 리소스 기반 정책이 구성된 특정 계정에만 적용됩니다(로 식별됨`<my-aws-account-id>`).

## 모범 사례
<a name="console-access-control-best-practices"></a>

### 긴급 복구 액세스를 위해 제외된 보안 주체 구성
<a name="console-access-control-bp-breakglass"></a>

AWS 에서는 프로덕션 환경에서 콘솔 권한 부여 정책을 적용하기 전에 제외된 사용자를 하나 이상 구성할 것을 권장합니다. 사전 인증 단계에서 `signin:PrincipalArn` 조건 키는 루트 사용자, IAM 사용자 및 역할 보안 주체를 제외합니다. 인증 후 단계에서 `aws:PrincipalArn` 조건 키는 모든 보안 주체 유형(루트 사용자, IAM 사용자, 페더레이션 사용자, 역할)을 제외합니다.

제외된 보안 주체는 선택 사항이지만 생략하면 네트워크 조건이 예기치 않게 변경되거나 정책이 잘못 구성된 경우 계정 잠금 위험이 증가합니다.

권장 제외-보안 주체 구성 단계:

1. 제외된 IAM 역할(예: `BreakGlassRole`)을 생성합니다.

1. 제외된 역할의 경우 역할 신뢰 정책에 MFA가 필요합니다.

1. 제외된 자격 증명에 긴급 복구에 필요한 최소 권한만 부여합니다.

1. 사전 인증(`signin:PrincipalArn`) 및 사후 인증(`aws:PrincipalArn`) 정책 설명 모두에 제외된 보안 주체 ARN을 포함합니다.

1. 복구 절차를 문서화하고 외부에 안전하게 저장합니다 AWS.

1. 제외된 보안 주체 액세스를 주기적으로 테스트하여 필요할 때 작동하는지 확인합니다.

### 복구 액세스 경로 유지
<a name="console-access-control-bp-recovery"></a>

위에서 설명한 제외된 보안 주체 외에도 콘솔 권한 부여 정책이 예기치 않게 로그인을 차단하는 경우 대체 액세스 방법을 사용할 수 있는지 확인합니다.
+ **역할 기반 프로그래밍 방식 액세스:** 콘솔 권한 부여 정책은 대화형 콘솔 로그인에만 적용됩니다. SigV4로 서명된 API 요청에는 적용되지 않습니다. 프로그래밍 방식 액세스(예: 기존 액세스 키, 교차 계정 역할)가 있는 경우 이를 사용하여 제한 정책을 호출`signin:DeleteConsoleAuthorizationConfiguration`하고 제거합니다. 자격 증명에는 `signin:DeleteConsoleAuthorizationConfiguration` 권한(`AWSSignInResourcePolicyManagement`관리형 정책에 포함됨)이 포함되어야 합니다.는 장기 IAM 사용자 액세스 키에 대한 임시 자격 증명을 AWS 권장합니다. 멤버 계정의 경우 관리 계정 관리자는 멤버 계정(`aws sts assume-role`)`OrganizationAccountAccessRole`에서를 수임하여 이러한 임시 자격 증명을 얻을 수 있습니다.
+ **AWS 지원 복구:** 루트 사용자 계정 이메일 및 전화번호를 최신 상태로 유지합니다. excluded-principal 및 프로그래밍 방식 액세스를 모두 사용할 수 없는 경우 AWS Support는 자격 증명 확인 후 복구 포털 링크를 제공할 수 있습니다. 전체 복구 프로세스는 [콘솔 권한 부여를 활성화한 후 계정이 잠겼습니다.](#console-access-control-ts-lockout) 섹션을 참조하세요.

### 프로덕션 배포 전 테스트
<a name="console-access-control-bp-testing"></a>

AWS 에서는 정책이 계정에 미치는 영향을 철저히 테스트하지 않고 조직의 루트에 제한적인 RCPs를 연결하지 않을 것을 권장합니다. 대신 계정을 한 번에 하나씩 또는 최소한 작은 숫자로 이동할 수 있는 OU를 생성하여 실수로 사용자를 키 계정에서 잠그지 않도록 합니다.

테스트 워크플로:

1. 기본 네트워크 제한을 사용하여 단일 권한 문을 생성합니다.

1. 비프로덕션 계정에서 콘솔 권한 부여를 활성화합니다.

1. 허용된 네트워크와 거부된 네트워크 모두에서 콘솔 액세스를 테스트합니다.

1. Amazon CloudTrail 로그를 검토하여 정책 평가 동작을 확인합니다.

1. 제외된 보안 주체를 사용하여 액세스를 테스트합니다.

1. 추가 네트워크 및 계정으로 점진적으로 확장합니다.

1. 프로덕션 계정에 적용하기 전에 모니터링합니다.

### defense-in-depth를 사용한 설계
<a name="console-access-control-bp-defense"></a>

광범위한 보안 전략 내에서 AWS 로그인 리소스 기반 정책 및 리소스 제어 정책을 하나의 계층으로 사용합니다. AWS 로그인 정책은 네트워크 위치 및 보안 주체 자격 증명에 따라 콘솔 액세스를 제한합니다. 다른 정책 유형과 결합하여 포괄적인 액세스 제어를 생성합니다.
+ **AWS 로그인 정책(리소스 기반 정책 및 RCPs): 인증 전, 중, 후에 네트워크 위치 및 보안 주체 자격 증명을 기반으로 콘솔 액세스를** 제한합니다.
+ **IAM 정책:** 로그인 후 사용자가 수행할 수 있는 작업을 제어합니다.
+ **서비스 제어 정책(SCPs):** 모든 보안 주체에 조직 전체의 권한 가드레일을 적용합니다.
+ **VPC 엔드포인트 정책:** VPC 엔드포인트를 통해 액세스할 수 있는 서비스 및 계정을 제어합니다.

### 지속적으로 모니터링 및 감사
<a name="console-access-control-bp-monitoring"></a>

AWS CloudTrail 는 모든 AWS 로그인 정책 평가 및 구성 변경을 자동으로 기록합니다. 최대 90일 동안 CloudTrail 이벤트 기록에서 이러한 이벤트를 봅니다. 보존 기간을 늘리려면 추적을 생성하여 Amazon S3에 이벤트를 전송합니다([추적 생성](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html) 참조). 실시간 알림의 경우 AWS 로그인 이벤트와 일치하는 Amazon EventBridge 규칙을 생성하거나, 지표 필터 기반 경보를 위해 CloudWatch Logs 로그 그룹에 전달하도록 추적을 구성하거나, 기존 SIEM 솔루션에 이벤트를 전달합니다.

## 사용 사례
<a name="console-access-control-use-cases"></a>

네트워크 경계 적용  
기업 VPCs. 사용자가 신뢰할 수 있는 네트워크 위치에서만 로그인할 수 있도록 개별 계정에 대한 리소스 기반 정책 또는 조직 전체의 적용을 위한 리소스 제어 정책(RCPs)을 사용하여 퍼블릭 또는 신뢰할 수 없는 네트워크에서의 무단 액세스를 방지합니다.  
**예제 시나리오:** 회사가 회사 네트워크 또는 승인된 AWS VPCs에서 시작하려면 모든 콘솔 액세스가 필요합니다. 단일 계정에 대한 리소스 기반 정책 또는 조직 전체의 RCP를 구성하여 긴급 관리자의 긴급 복구 액세스를 유지하면서 다른 모든 네트워크의 액세스를 거부합니다.

규정 준수 요구 사항  
네트워크 기반 액세스 제어에 대한 규제 요구 사항을 충족합니다. 많은 규정 준수 프레임워크에서는 조직이 네트워크 위치에 따라 민감한 시스템에 대한 액세스를 제한해야 합니다. AWS 로그인 정책은 이러한 요구 사항 준수를 입증하는 감사 가능하고 시행 가능한 제어를 제공합니다.  
**예제 시나리오:** 금융 서비스 회사는 승인된 네트워크에서만 콘솔에 액세스해야 하는 규정을 준수해야 합니다. RCPs 사용하여 조직 전체의 네트워크 제한을 적용하고 규정 준수의 증거로 AWS CloudTrail 로그를 유지합니다.

다중 계정 거버넌스  
AWS Organizations에서 일관된 콘솔 액세스 정책을 구현합니다. RCPs 사용하여 모든 멤버 계정에 표준 네트워크 제한을 적용하여 개별 계정 수준 구성 없이 일관된 보안 태세를 보장합니다.  
**예제 시나리오:** AWS 계정이 100개 이상인 기업은 RCPs 사용하여 조직 내 VPC 엔드포인트에서 모든 콘솔 액세스를 시작하도록 요구하는 정책을 적용하여 모든 계정에서 일관된 네트워크 제어를 확인합니다.

타사 액세스 제어  
특정 네트워크의 파트너 또는 계약자에게 임시 콘솔 액세스 권한을 부여합니다. 조직은 전반적인 보안 태세를 손상시키지 않고 외부 당사자에 대한 시간 제한, 네트워크 제한 콘솔 액세스를 생성할 수 있습니다.  
**예제 시나리오:** 회사가 컨설팅 회사 임시 콘솔 액세스 권한을 부여해야 합니다. 이들은 컨설팅 회사의 알려진 IP 범위에서만, 그리고 컨설턴트에게 할당된 IAM 역할에 대해서만 액세스를 허용하는 리소스 기반 정책을 생성합니다.

콘솔 액세스를 특정 보안 주체로 제한  
네트워크 위치에 관계없이 정의된 보안 주체 집합만에 로그인 AWS Management Console하고 다른 모든 보안 주체를 거부하도록 허용합니다. 이는 VPC 엔드포인트를 사용하지 않고 자격 증명 기반 콘솔 제한을 원하는 고객에게 유용합니다. 콘솔 로그인이 거부된 보안 주체는 프로그래밍 방식 액세스를 유지합니다. AWS 로그인 정책은 콘솔 로그인만 게이트하고 제외된 보안 주체만 로그인할 수 있습니다.  
**예제 시나리오:** 회사가 관리자만 콘솔을 사용하기를 원합니다. 관리자 보안 주체 ARNs을 제외한 모든 보안 주체에 대한 콘솔 로그인을 거부하는 RCP를 구성합니다. 유효한 자격 증명이 있는 Amazon EC2 인스턴스 역할은 프로그래밍 방식으로 권한을 유지하더라도 제외된 보안 주체가 아니므로 콘솔에 로그인할 수 없습니다. 이를 통해 콘솔 로그인에 사용되는 인스턴스 역할 자격 증명의 일반적인 사례를 해결할 수 있습니다.

## 콘솔 액세스 제어 문제 해결
<a name="console-access-control-troubleshooting"></a>

### 로그인 리소스 기반 정책의 네트워크 조건으로 인해 로그인할 수 없음
<a name="console-access-control-ts-network"></a>

 AWS 로그인 정책에 의해 액세스가 거부되면 다음 오류 메시지 중 하나가 표시될 수 있습니다.
+ “인증 정보가 잘못되었습니다. 다시 시도하세요.” (리소스 기반 정책에 의한 사전 인증 거부)
+ “인증 실패 잘못된 요청”(RDP의 사전 인증 거부)
+ “인증 실패:이 계정에 액세스하려면 다른 네트워크에서 로그인하거나 관리자에게 자세한 내용을 문의하세요.”(인증 후 거부)

이러한 오류가 표시되고 액세스가 허용되어야 한다고 생각되면 AWS 관리자에게 문의하십시오. `errorMessage` "리소스 기반 정책으로 인해 권한 부여가 거부됨" 또는 "리소스 제어 정책으로 인해 권한 부여가 거부됨"이 포함된 `ConsoleLogin` 이벤트에 대한 CloudTrail 로그를 검토하여 액세스를 거부한 정책 설명을 식별할 수 있습니다.

**가능한 원인:**
+ 소스 IP 주소가 허용된 CIDR 범위에 있지 않습니다.
+ 필수 VPC 또는 VPC 엔드포인트에 연결되어 있지 않습니다.
+ 정책의 예상 리전과 일치하지 않는 리전 로그인 엔드포인트에 액세스하고 있습니다.
+ 보안 주체 ARN이 정책의 제외된 보안 주체에 올바르게 나열되지 않습니다.
+ 정책이 최근에 업데이트되었으며 변경 사항이 아직 전역적으로 복제되지 않았습니다.

**​해결 방법:**
+ 회사 네트워크 또는 VPN에 연결되어 있는지 확인합니다.
+ VPC 엔드포인트 기반 제한이 구성된 경우 올바른 VPC 엔드포인트를 통해에 액세스하고 있는지 확인합니다.
+  AWS 관리자에게 문의하여 정책 구성을 확인하고 권한이 부여된 네트워크를 확인합니다.
+ 제외된 보안 주체로 구성된 경우 제외된 보안 주체 목록에서 보안 주체 ARN이 올바르게 구성되었는지 확인합니다.
+ 최근에 정책이 변경된 경우 글로벌 복제가 완료될 때까지 몇 분 정도 기다립니다.

**이 문제를 진단하는 관리자의 경우:**
+ 정책 평가 이벤트에 대한 AWS CloudTrail 로그를 검토하여 액세스를 거부한 정책 설명을 식별합니다.
+ `aws signin get-resource-policy`를 사용하여 현재 정책 구성을 검토합니다.
+ 사용자의 네트워크 위치가 정책의 조건과 일치하는지 확인합니다.
+ 사용자가 네트워크 제한에서 제외되어야 하는 경우 제외된 보안 주체가 올바르게 구성되었는지 확인합니다.

### 콘솔 권한 부여를 활성화한 후 계정이 잠겼습니다.
<a name="console-access-control-ts-lockout"></a>

콘솔 인증을 구성했고 계정에 더 이상 액세스할 수 없는 경우 정책을 적용하기 전에 제외된 보안 주체를 구성하지 않았을 수 있습니다.

계정 유형 및 사용 가능한 자격 증명에 따라 액세스를 다시 획득할 수 있는 여러 경로가 있습니다.

**옵션 1: 프로그래밍 방식 액세스 사용(AWS CLI 또는 SDK)**

콘솔 권한 부여 정책은 대화형 콘솔 로그인에만 적용됩니다. SigV4로 서명된 API 요청에는 적용되지 않습니다. 프로그래밍 방식 액세스(예: 기존 액세스 키, 교차 계정 역할)가 있는 경우 이를 사용하여 제한 정책을 호출`signin:DeleteConsoleAuthorizationConfiguration`하고 제거합니다. 사용하는 자격 증명에는를 호출할 수 있는 권한이 있어야 합니다`signin:DeleteConsoleAuthorizationConfiguration`. `AWSSignInResourcePolicyManagement` 관리형 정책에는이 permission. AWS recommds가 장기 IAM 사용자 액세스 키에 대한 임시 자격 증명을 포함합니다. 멤버 계정의 경우 관리 계정 관리자는 멤버 계정`OrganizationAccountAccessRole`에서를 수임하여 임시 자격 증명을 얻을 수 있습니다. 이 역할은 조직에 가입하도록 초대된 계정에서 자동으로 생성되지 않습니다.

```
aws signin delete-console-authorization-configuration \
  --target-id <your-aws-account-id> \
  --region us-east-1
```

또는 특정 권한 설명을 삭제합니다.

```
# First, list statements to get the statement ID
aws signin list-resource-permission-statements \
  --region us-east-1

# Then delete the problematic statement
aws signin delete-resource-permission-statement \
  --statement-id <statement-id> \
  --region us-east-1
```

**옵션 2: AWS Support에 문의**

프로그래밍 방식 액세스 권한이 없고 계정 액세스`OrganizationAccountAccessRole`에를 사용할 수 없는 경우 AWS Support에 문의하여 잠금 복구 프로세스를 시작합니다.

복구 프로세스는 다음과 같이 작동합니다.

1. 위의 옵션을 사용하여 문제를 해결할 수 없는 경우 지원 센터에서 AWS 지원 사례를 엽니다. AWS Support는 계정을 검사하기 전에 자격 증명을 확인합니다. 확인 방법에는 루트 사용자 계정 이메일 주소 확인, 전화 확인 통화 응답 또는 계정 보안 질문에 대한 답변이 포함될 수 있습니다.

1. AWS 지원은 콘솔 액세스 문제가 리소스 기반 정책 잠금으로 인해 발생했음을 확인합니다.

1. AWS Support는 복구 포털 링크를 공유합니다. 이 링크를 사용하여 `signin:DeleteConsoleAuthorizationConfiguration` 권한이 있는 계정의 IAM 보안 주체로 로그인합니다. 이 권한을 통해 보안 주체는 잠금을 유발하는 콘솔 권한 부여 구성을 삭제할 수 있습니다.

**중요**  
복구 포털은 모든 리소스 권한 문을 포함하여 계정에 대한 전체 콘솔 권한 부여 구성을 제거합니다. 복구 포털은 AWS 로그인 리소스 기반 정책의 재구성을 허용하지 않습니다.

복구 포털 링크는 AWS Support에서 공유한 후 72시간 후에 만료됩니다. 해당 기간 내에 복구를 완료하지 않으면 AWS Support에 문의하여 프로세스를 다시 시작하세요.

**액세스 권한을 다시 획득한 후:**
+ 적절하게 구성된 제외된 보안 주체를 포함하도록 리소스 권한 설명을 검토하고 업데이트합니다.
+ 콘솔 인증을 다시 활성화하기 전에 예상 네트워크에서 콘솔 액세스를 테스트합니다.
+ 나중에 참조할 수 있도록 복구 절차를 문서화합니다.

### 변경 사항이 매번 즉시 표시되는 것은 아닙니다
<a name="console-access-control-ts-replication"></a>

정책 변경은 전역적으로 복제되지만 복제에는 몇 분 정도 걸릴 수 있습니다.

**​해결 방법:**
+ 정책을 변경한 후 글로벌 복제가 완료될 때까지 몇 분 정도 기다립니다.
+ `get-resource-policy` 명령을 사용하여 변경 사항을 확인합니다.

```
aws signin get-resource-policy --region <your-region>
```
+  AWS CloudTrail 로그에서 정책 평가 이벤트를 확인하여 새 정책이 평가되고 있는지 확인합니다.
+ 작업에 올바른 리전을 사용하고 있는지 확인합니다(쓰기 작업은를 사용해야 함`us-east-1`).
+ VPC 엔드포인트 기반 조건을 사용하는 경우 VPC 엔드포인트 정책도 올바르게 구성되어 있는지 확인합니다.

**일반적인 정책 복제 문제:**
+ **캐시된 로그인 페이지:** 브라우저가 로그인 페이지를 캐시할 수 있습니다. 브라우저 캐시를 지우거나 incognito 창을 사용하여 정책 변경을 테스트합니다.
+ **충돌하는 문:** 여러 권한 문이 있는 경우 서로 충돌하지 않는지 확인합니다. `get-resource-policy`를 사용하여 통합 정책을 검토합니다.
+ **VPC 엔드포인트 정책:** AWS 로그인 정책은 VPC 엔드포인트 정책과 함께 작동합니다. 둘 다 원하는 액세스를 허용해야 합니다.