

# 수동으로 SQL Server Audit에 대한 IAM 역할 생성
<a name="Appendix.SQLServer.Options.Audit.IAM"></a>

일반적으로 새 옵션을 만들면 AWS Management Console은 IAM 역할 및 IAM 신뢰 정책을 생성합니다. 그러나 SQL Server Audit에서 사용할 새로운 IAM 역할을 수동으로 생성할 수 있으므로 추가 요구 사항에 맞게 사용자 지정할 수 있습니다. 그러려면 IAM 역할을 생성하고 Amazon RDS 서비스가 Amazon S3 버킷을 사용할 수 있도록 권한을 위임합니다. IAM 역할을 만들 때 신뢰 및 권한 정책을 연결합니다. 신뢰 정책은 Amazon RDS가 이 역할을 맡도록 허용합니다. 권한 정책은 이 역할이 수행할 수 있는 작업을 정의합니다. 자세한 내용은 *AWS Identity and Access Management 사용 설명서*에서 [AWS 서비스에 대한 권한을 위임할 역할 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)을 참조하세요.

이 섹션의 예를 사용하여 필요한 신뢰 관계와 사용 권한 정책을 생성할 수 있습니다.

다음 예는 SQL Server Audit에 대한 신뢰 관계를 보여줍니다. 이 관계는 *서비스 원칙* `rds.amazonaws.com`을 사용하여 RDS가 S3 버킷에 쓸 수 있도록 허용합니다. *서비스 보안 주체*는 서비스에 권한을 부여하는 데 사용되는 식별자입니다. 이러한 방식으로 `rds.amazonaws.com`에 대한 액세스를 허용할 때마다 RDS가 사용자를 대신하여 작업을 수행하도록 허용합니다. 서비스 보안 주체에 대한 자세한 내용은 [AWS JSON 정책 요소: 보안 주체](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html)를 참조하세요.

**Example SQL Server Audit에 대한 신뢰 관계**    
****  

```
{
	    "Version":"2012-10-17",		 	 	 
	    "Statement": [
	        {
	            "Effect": "Allow",
	            "Principal": {
	                "Service": "rds.amazonaws.com"
	            },
	            "Action": "sts:AssumeRole"
	        }
	    ]
	}
```

서비스 권한을 특정 리소스로 제한하는 리소스 기반 신뢰 관계의 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) 및 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) 전역 조건 컨텍스트 키를 사용하는 것이 좋습니다. 이는 [혼동된 대리자 문제](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html)를 방지하는 가장 효과적인 방법입니다.

전역 조건 컨텍스트 키를 모두 사용하고 `aws:SourceArn` 값에 계정 ID가 포함되도록 할 수 있습니다. 이 경우 `aws:SourceAccount` 값과 `aws:SourceArn` 값의 계정이 동일한 문에서 사용될 때 동일한 계정 ID를 사용해야 합니다.
+ 단일 리소스에 대한 교차 서비스 액세스를 원하는 경우 `aws:SourceArn`을 사용하세요.
+ 해당 계정의 모든 리소스가 교차 서비스 사용과 연결되도록 허용하려는 경우 `aws:SourceAccount`를 사용하세요.

신뢰 정책에서는 역할에 액세스하는 리소스의 전체 Amazon 리소스 이름(ARN)이 포함된 `aws:SourceArn` 전역 조건 컨텍스트 키를 사용해야 합니다. SQL Server Audit의 경우 다음 예와 같이 DB 옵션 그룹과 DB 인스턴스를 모두 포함해야 합니다.

**Example SQL Server Audit에 대한 전역 조건 컨텍스트 키와의 신뢰 관계**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "rds.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceArn": [
                        "arn:aws:rds:Region:my_account_ID:db:db_instance_identifier",
                        "arn:aws:rds:Region:my_account_ID:og:option_group_name"
                    ]
                }
            }
        }
    ]
}
```

SQL Server Audit에 대한 권한 정책의 다음 예에서는 Amazon S3 버킷에 대한 ARN을 지정합니다. ARN을 사용하여 액세스 권한을 부여할 특정 계정, 사용자 또는 역할을 식별할 수 있습니다. ARN 사용에 대한 자세한 내용은 [Amazon 리소스 이름(ARN)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)을 참조하세요.

**Example SQL Server Audit에 대한 권한 정책**    
****  

```
{
	    "Version":"2012-10-17",		 	 	 
	    "Statement": [
	        {
	            "Effect": "Allow",
	            "Action": "s3:ListAllMyBuckets",
	            "Resource": "*"
	        },
	        {
	            "Effect": "Allow",
	            "Action": [
	                "s3:ListBucket",
	                "s3:GetBucketACL",
	                "s3:GetBucketLocation"
	            ],
	            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket"
	        },
	        {
	            "Effect": "Allow",
	            "Action": [
	                "s3:PutObject",
	                "s3:ListMultipartUploadParts",
	                "s3:AbortMultipartUpload"
	            ],
	            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/key_prefix/*"
	        }
	    ]
	}
```

**참고**  
`s3:ListAllMyBuckets` 작업은 동일한 AWS 계정이 S3 버킷과 SQL Server DB 인스턴스를 모두 소유하고 있는지 확인하는 데 필요합니다. 이 작업은 계정에 있는 버킷의 이름을 나열합니다.  
S3 버킷 네임스페이스는 글로벌입니다. 실수로 버킷을 삭제한 경우 다른 사용자가 동일한 이름의 버킷을 다른 계정에서 만들 수 있습니다. 그런 다음 SQL Server 감사 데이터가 새 버킷에 기록됩니다.