

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

# Network Load Balancer의 액세스 로그 활성화
<a name="enable-access-logs"></a>

로드 밸런서에 대한 액세스 로그를 활성화할 때는 로드 밸런서가 로그를 저장할 S3 버킷의 이름을 지정해야 합니다. 버킷에 액세스 로그를 쓰는 Elastic Load Balancing 권한을 부여하는 버킷 정책이 이 버킷에 있어야 합니다.

**중요**  
로드 밸런서에 TLS 리스너가 있고 로그가 TLS 요청에 관한 정보만 포함하는 경우에만 액세스 로그가 생성됩니다.

## 버킷 요구 사항
<a name="access-logging-bucket-requirements"></a>

기존 버킷을 사용하거나 액세스 로그 전용 버킷을 생성할 수 있습니다. 버킷은 다음 요구 사항을 충족해야 합니다.

**요구 사항**
+ 버킷은 로드 밸런서와 같은 리전에 있어야 합니다. 서로 다른 계정에서 버킷과 로드 밸런서를 소유할 수 있습니다.
+ 지정하는 접두사에는 `AWSLogs`가 포함되지 않아야 합니다. `AWSLogs`로 시작하는 파일 이름의 일부가 지정하는 버킷 이름과 접두사 뒤에 추가됩니다.
+ 버킷에 대한 액세스 로그 쓰기 권한을 부여하는 버킷 정책이 이 버킷에 있어야 합니다. 버킷 정책은 버킷에 대한 액세스 권한을 정의하기 위해 액세스 정책 언어로 작성된 JSON 문의 집합입니다.

**버킷 정책 예제**  
다음은 예제 정책입니다. `Resource` 요소에서 {{amzn-s3-demo-destination-bucket}}을 액세스 로그의 S3 버킷 이름으로 바꿉니다. 버킷 접두사를 사용하지 않는 경우 {{Prefix/}}를 생략해야 합니다. 에서 로드 밸런서를 사용하여 AWS 계정의 ID를 `aws:SourceAccount`지정합니다. `aws:SourceArn`에서 {{region}}과 {{012345678912}}를 각각 로드 밸런서의 리전과 계정 ID로 바꿉니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "AWSLogDeliveryWrite",
    "Statement": [
        {
            "Sid": "AWSLogDeliveryAclCheck",
            "Effect": "Allow",
            "Principal": {
                "Service": "delivery.logs.amazonaws.com"
            },
            "Action": "s3:GetBucketAcl",
            "Resource": "arn:aws:s3:::{{amzn-s3-demo-destination-bucket}}",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": [
                        "{{012345678912}}"
                    ]
                },
                "ArnLike": {
                    "aws:SourceArn": [
                        "arn:aws:logs:{{us-east-1}}:{{012345678912}}:*"
                    ]
                }
            }
        },
        {
            "Sid": "AWSLogDeliveryWrite",
            "Effect": "Allow",
            "Principal": {
                "Service": "delivery.logs.amazonaws.com"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::{{amzn-s3-demo-destination-bucket}}/{{Prefix/}}AWSLogs/{{account-ID}}/*",
            "Condition": {
                "StringEquals": {
                    "s3:x-amz-acl": "bucket-owner-full-control",
                    "aws:SourceAccount": [
                        "{{012345678912}}"
                    ]
                },
                "ArnLike": {
                    "aws:SourceArn": [
                        "arn:aws:logs:{{us-east-1}}:{{012345678912}}:*"
                    ]
                }
            }
        }
    ]
}
```

------<a name="access-log-bucket-encryption"></a>

**암호화(Encryption)**

다음 방법 중 하나를 사용하여 Amazon S3 액세스 로그 버킷에 대해 서버 측 암호화를 활성화할 수 있습니다.
+ Amazon S3 관리형 키(SSE-S3)
+ AWS KMS 에 저장된 키 AWS Key Management Service (SSE-KMS) †

† Network Load Balancer 액세스 로그를 사용하면 AWS 관리형 키를 사용할 수 없으며 고객 관리형 키를 사용해야 합니다.

자세한 내용은 [ Amazon S3 사용 설명서의 Amazon S3 암호화 지정(SSE-S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/specifying-s3-encryption.html) *및 Amazon S3*[를 사용한 서버 측 암호화 지정 AWS KMS (SSE-KMS)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/specifying-kms-encryption.html)을 참조하세요.

키 정책은 서비스가 로그를 암호화하고 해독할 수 있도록 허용해야 합니다. 다음은 예제 정책입니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "delivery.logs.amazonaws.com"
      },
      "Action": [
        "kms:Encrypt",
        "kms:Decrypt",
        "kms:ReEncrypt*",
        "kms:GenerateDataKey*",
        "kms:DescribeKey"
      ],
      "Resource": "*"
    }
  ]
}
```

------

## 액세스 로그 구성
<a name="configure-access-logs"></a>

요청 정보를 캡처하고 로그 파일을 S3 버킷에 전송하도록 다음과 같은 절차에 따라 액세스 로그를 구성합니다.

------
#### [ Console ]

**액세스 로그를 활성화하려면**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 탐색 창에서 **로드 밸런서**를 클릭합니다.

1. 로드 밸런서 이름을 선택하여 세부 정보 페이지를 엽니다.

1. **속성** 탭에서 **편집**을 선택합니다.

1. **모니터링**에서 **액세스 로그**를 켭니다.

1. **S3 URI**로 로그 파일의 S3 URI를 입력합니다. 지정하는 URI는 접두사 사용 여부에 따라 달라집니다.
   + 접두사가 있는 URI: s3://{{amzn-s3-demo-logging-bucket}}/{{logging-prefix}}
   + 접두사가 없는 URI: s3://{{amzn-s3-demo-logging-bucket}}

1. **변경 사항 저장**을 선택합니다.

------
#### [ AWS CLI ]

**액세스 로그를 활성화하려면**  
관련 속성과 함께 [modify-load-balancer-attributes](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-load-balancer-attributes.html) 명령을 사용합니다.

```
aws elbv2 modify-load-balancer-attributes \
    --load-balancer-arn {{load-balancer-arn}} \
    --attributes \
        Key=access_logs.s3.enabled,Value=true \
        Key=access_logs.s3.bucket,Value={{amzn-s3-demo-logging-bucket}} \
        Key=access_logs.s3.prefix,Value={{logging-prefix}}
```

------
#### [ CloudFormation ]

**액세스 로그를 활성화하려면**  
관련 속성을 포함하도록 [AWS::ElasticLoadBalancingV2::LoadBalancer](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-loadbalancer.html) 리소스를 업데이트합니다.

```
Resources:
  myLoadBalancer:
    Type: 'AWS::ElasticLoadBalancingV2::LoadBalancer'
    Properties:
      Name: my-nlb
      Type: network
      Scheme: internal
      Subnets: 
        - !Ref subnet-AZ1
        - !Ref subnet-AZ2
      SecurityGroups: 
        - !Ref mySecurityGroup
      LoadBalancerAttributes: 
        - Key: "access_logs.s3.enabled"
          Value: "true"
        - Key: "access_logs.s3.bucket"
          Value: "{{amzn-s3-demo-logging-bucket}}"
        - Key: "access_logs.s3.prefix"
          Value: "{{logging-prefix}}"
```

------