

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

# 프로그래밍 방식 액세스를 위한 간소화된 AWS 서비스 정보
<a name="service-reference"></a>

AWS 는 정책 관리 워크플로의 자동화를 간소화하기 위해 서비스 참조 정보를 JSON 형식으로 제공합니다. 서비스 참조 정보를 사용하면 기계가 읽을 수 있는 파일에서의 사용 가능한 작업, 작업, 리소스 및 조건 키 AWS 서비스 에 액세스할 수 있습니다. 서비스 참조 정보에는 IAM 작업에서 마지막으로 액세스한 정보와 IAM Access Analyzer 정책 생성 데이터를 포함하여 권한 부여 세부 정보 이외의 메타데이터가 포함됩니다.

보안 관리자는 가드레일을 설정할 수 있으며 개발자는 각에 사용 가능한 작업, 리소스 및 조건 키를 식별하여 애플리케이션에 대한 적절한 액세스를 보장할 수 있습니다 AWS 서비스.는 메타데이터를 정책 관리 워크플로에 통합할 수 있도록 AWS 서비스 에 대한 서비스 참조 정보를 AWS 제공합니다.
+ IAM 정책에 사용할 작업, 리소스, 조건 키의 인벤토리는 AWS 서비스의 [서비스 권한 부여 참조](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html) 페이지를 참조하세요. 서비스 접두사를 공유하는 서비스 작업, 리소스, 조건 키는 서비스 권한 부여 참조의 여러 페이지에 나뉘어 있을 수 있습니다.
+ IAM 작업에서 마지막으로 액세스한 정보가 표시되는 AWS 서비스 및 작업 목록은 [IAM 사용 설명서의 IAM 작업에서 마지막으로 액세스한 정보 서비스 및 작업을](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_last-accessed-action-last-accessed.html) 참조하세요.
+ IAM Access Analyzer가 작업 수준 정보로 정책을 생성하는 AWS 서비스 및 작업 목록은 [IAM 사용 설명서의 IAM Access Analyzer 정책 생성 서비스를](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-generation-action-last-accessed-support.html) 참조하세요.

서비스 권한 부여 참조에 표시된 콘텐츠가 다르게 표시되거나 다른 메타데이터를 포함할 수 있습니다. 자세한 내용은 [추가 필드 정의](#service-reference-additional-field-definitions) 단원을 참조하십시오.

또한 서비스 참조 정보는 승인된 작업에 대한 정보와 SDKs 이름을 포함하여 작업에 대한 메타데이터를 제공합니다.

권한 범위를 조정하는 데 도움이 되도록 조건 키 값의 추가 컨텍스트를 사용할 수 있습니다. 예를 들어 작업이 작업에 의해 `iam:PassRole` 승인되면의 값이 나타날 `iam:PassedToService` 수 있습니다.

이 작업-작업 매핑은 일부 서비스에서 지원되지 않습니다. 이 매핑을 아직 지원하지 않는 서비스는 AuthorizedAction 속성을 생략합니다. 또한 작업에 대한 승인된 작업 정보에는 [Forward Access Sessions](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_forward_access_sessions.html)를 사용하여 사용자를 대신하여 호출하는 작업에 필요할 수 있는 권한은 포함되지 않습니다.

**참고**  
서비스 참조 정보 변경이 서비스의 메타데이터 목록에 반영되는 데 최대 24시간이 걸릴 수 있습니다.

**AWS 서비스 참조 정보 액세스**

1. 서비스 참조 정보로 이동하여 참조 정보를 사용할 수 AWS 서비스 있는 목록에 액세스합니다.

   두 가지 주요 진입점이 있습니다.

   [http://servicereference.us-east-1.amazonaws.com/](http://servicereference.us-east-1.amazonaws.com/) 참조 정보를 사용할 수 AWS 서비스 있는 목록이 표시됩니다.

   다음 예제에서는 각 참조 정보에 대한 서비스 및 URL의 일부 목록을 보여줍니다.

   ```
   [ 
       { 
           "service": "s3", 
           "url": "https://servicereference.us-east-1.amazonaws.com/v1/s3/s3.json" 
       }, 
       { 
           "service": "dynamodb", 
           "url": "https://servicereference.us-east-1.amazonaws.com/v1/dynamodb/dynamodb.json" 
       }, 
       …
   ]
   ```

   [https://servicereference.us-east-1.amazonaws.com/v1/mapping.json](https://servicereference.us-east-1.amazonaws.com/v1/mapping.json) 정보를 찾을 수 있는 서비스 참조의 위치로 SDK 서비스의 매핑을 표시합니다.

   다음 예제에서는 매핑의 일부 목록을 보여줍니다.

   ```
   {
     "SDK" : {
       "Python" : {
         "Boto3" : {
           "accessanalyzer" : {
             "service" : "access-analyzer",
             "url" : "https://servicereference.us-east-1.amazonaws.com/v1/access-analyzer/access-analyzer.json"
           },
           "account" : {
             "service" : "account",
             "url" : "https://servicereference.us-east-1.amazonaws.com/v1/account/account.json"
           },
           "amp" : {
             "service" : "aps",
             "url" : "https://servicereference.us-east-1.amazonaws.com/v1/aps/aps.json"
           },
           ...
         }
       }
     }
   }
   ```

1. 서비스를 선택하고 서비스의 `url` 필드에서 서비스 정보 페이지로 이동하여 서비스의 작업, 리소스, 조건 키 목록을 봅니다.

   다음 예제는 Amazon S3 서비스 참조 정보의 일부 목록을 보여줍니다.

   ```
   {
       "Name": "s3",
       "Actions": [
           {
               "Name": "GetObject",
               "ActionConditionKeys": [
                   "s3:AccessGrantsInstanceArn",
                   "s3:AccessPointNetworkOrigin",
                   "s3:DataAccessPointAccount",
                   "s3:DataAccessPointArn",
                   "s3:ExistingObjectTag/key",
                   "s3:ResourceAccount",
                   "s3:TlsVersion",
                   "s3:authType",
                   "s3:if-match",
                   "s3:if-none-match",
                   "s3:signatureAge",
                   "s3:signatureversion",
                   "s3:x-amz-content-sha256"
               ],
               "Annotations" : {
               "Properties" : {
                       "IsList" : false,
                       "IsPermissionManagement" : false,
                       "IsTaggingOnly" : false,
                       "IsWrite" : false
                   }
               },
               "Resources": [
                   {
                       "Name": "object"
                   }
               ],
               "SupportedBy" : {
                   "IAM Access Analyzer Policy Generation" : false,
                   "IAM Action Last Accessed" : false
               }
           },
           {
               "Name": "ListBucket",
               "ActionConditionKeys": [
                   "s3:AccessGrantsInstanceArn",
                   "s3:AccessPointNetworkOrigin",
                   "s3:DataAccessPointAccount",
                   "s3:DataAccessPointArn",
                   "s3:ResourceAccount",
                   "s3:TlsVersion",
                   "s3:authType",
                   "s3:delimiter",
                   "s3:max-keys",
                   "s3:prefix",
                   "s3:signatureAge",
                   "s3:signatureversion",
                   "s3:x-amz-content-sha256"
               ],
               "Annotations" : {
                   "Properties" : {
                       "IsList" : true,
                       "IsPermissionManagement" : false,
                       "IsTaggingOnly" : false,
                       "IsWrite" : false
                   }
               },
               "Resources": [
                   {
                       "Name": "bucket"
                   }
               ],
               "SupportedBy" : {
                   "IAM Access Analyzer Policy Generation" : false,
                   "IAM Action Last Accessed" : false
               }
           },
           ...
       ],
       "ConditionKeys": [
           {
               "Name": "s3:TlsVersion",
               "Types": [
                   "Numeric"
               ]
           },
           {
               "Name": "s3:authType",
               "Types": [
                   "String"
               ]
           },
           ...
       ],
       "Operations": [
           {
               "Name" : "GetObject",
               "AuthorizedActions" : [
                   {
                       "Name" : "GetObject",
                       "Service" : "s3"
                   }, {
                       "Name" : "GetObject",
                       "Service" : "s3-object-lambda"
                   }, {
                       "Name" : "GetObjectLegalHold",
                       "Service" : "s3"
                   }, {
                       "Name" : "GetObjectRetention",
                       "Service" : "s3"
                   }, {
                       "Name" : "GetObjectTagging",
                       "Service" : "s3"
                   }, {
                       "Name" : "GetObjectVersion",
                       "Service" : "s3"
                   }
               ],
               "SDK" : [
                   {
                       "Name" : "s3",
                       "Method" : "get_object",
                       "Package" : "Boto3"
                   }
               ]
           },
           ...
       ],
       "Resources": [
           {
               "Name": "accesspoint",
               "ARNFormats": [
                   "arn:${Partition}:s3:${Region}:${Account}:accesspoint/${AccessPointName}"
               ]
           },
           {
               "Name": "bucket",
               "ARNFormats": [
                   "arn:${Partition}:s3:::${BucketName}"
               ]
           }
           ...
       ],
       "Version": "v1.4"
   }
   ```

1. 정책 작성 워크플로에 사용할 서비스 URL에서 JSON 파일을 다운로드합니다.

## 용어집
<a name="service-reference-glossary"></a>
+ 작업 - 일반적으로 SDK를 통해 호출할 수 있는 API
+ 작업 - 작업을 수행할 때 권한이 부여된 권한

## 추가 필드 정의
<a name="service-reference-additional-field-definitions"></a>

**작업 속성**은 권한 범위에 따라 서비스 작업을 분류하는 데 도움이 되는 서비스 작업의 추가 메타데이터를 제공합니다. 이러한 속성은 각 작업의 `Annotations` 필드에서 찾을 수 있습니다. 메타데이터는 다음 4개의 부울 값으로 구성됩니다.
+ `IsList` - 리소스 콘텐츠에 액세스하지 않고 기본 메타데이터를 포함한 리소스를 검색하고 나열할 수 있는 권한을 제공합니다.

  **예** - Amazon S3 `ListBucket` 작업에서 이 속성은 `true`이므로 사용자가 객체 자체에 액세스하지 않고도 버킷 목록을 볼 수 있습니다.
+ `IsPermissionManagement` - IAM 권한 또는 액세스 자격 증명을 수정할 수 있는 권한을 제공합니다.

  **예** -이 속성은 대부분의 IAM 및 AWS Organizations 작업과 `PutBucketPolicy` 및와 같은 Amazon S3 작업에 `true` 적용됩니다`DeleteBucketPolicy`.
+ `IsTaggingOnly` - 태그를 수정할 수 있는 권한만 제공합니다.

  **예** - IAM 작업 `TagRole` 및 `UntagRole`에서 이 속성은 `true`이고, `CreateRole`의 경우 태그 지정 이상의 광범위한 권한을 제공하므로 `false`입니다.
+ `IsWrite` - 리소스를 수정할 수 있는 권한을 제공하며, 여기에는 태그 수정 권한이 포함될 수 있습니다.

  **예** - 리소스 수정을 허용하므로 이 속성은 Amazon S3 작업 `CreateBucket`, `DeleteBucket`, `PutObject`에서 `true`입니다.

**참고**  
이러한 속성은 상호 배타적이지 않습니다. 한 작업의 여러 속성이 `true`로 설정될 수 있습니다.  
Amazon S3의 `GetObject` 작업에서 볼 수 있듯이 모든 속성이 `false`일 수도 있습니다. 이는 작업이 객체에 대한 읽기 권한만 부여함을 나타냅니다.

이러한 속성을 사용하여 서비스에 대한 인사이트를 생성할 수 있습니다. 다음 예제는 리소스 변형을 허용하는 `s3` 접두사가 있는 권한을 보여줍니다.

```
> curl https://servicereference.us-east-1.amazonaws.com/v1/s3/s3.json | \
    jq '.Actions[] | select(.Annotations.Properties.IsWrite == true) | .Name'

"AssociateAccessGrantsIdentityCenter"
"BypassGovernanceRetention"
"CreateAccessGrant"
"CreateAccessGrantsInstance"
"CreateAccessGrantsLocation"
...
```

다음 예제는 권한 관리 작업에 대한 액세스를 제한하는 데 사용할 수 있는 `lambda` 접두사가 있는 작업 조건 키를 보여줍니다.

```
> curl https://servicereference.us-east-1.amazonaws.com/v1/lambda/lambda.json | \
    jq '.Actions[] | select(.Annotations.Properties.IsPermissionManagement == true) | {Name: .Name, ActionConditionKeys: (.ActionConditionKeys // [])}'
 
{
   "Name": "AddLayerVersionPermission",
    "ActionConditionKeys": []
}
{
    "Name": "AddPermission",
    "ActionConditionKeys": [
        "lambda:FunctionUrlAuthType",
        "lambda:Principal"
    ]
}
{
    "Name": "DisableReplication",
    "ActionConditionKeys": []
}
{
    "Name": "EnableReplication",
    "ActionConditionKeys": []
}
{
    "Name": "RemoveLayerVersionPermission",
    "ActionConditionKeys": []
}
{
    "Name": "RemovePermission",
    "ActionConditionKeys": [
        "lambda:FunctionUrlAuthType",
        "lambda:Principal"
    ]
}
```