

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

# 보안 준비
<a name="preparing-security"></a>

이 섹션에서는 AWS IoT Device Management 소프트웨어 패키지 카탈로그의 주요 보안 요구 사항에 대해 설명합니다.

## 리소스 기반 인증
<a name="resource-based-authorization"></a>

소프트웨어 패키지 카탈로그는 리소스 기반 인증을 사용하여 플릿의 소프트웨어를 업데이트할 때 보안을 강화합니다. 즉, 소프트웨어 패키지 및 패키지 버전에 대해 `create`, `read`, `update``delete`, 및 `list` 작업을 수행할 권한을 부여하는 AWS Identity and Access Management (IAM) 정책을 생성하고 `Resources` 섹션에서 배포하려는 특정 소프트웨어 패키지 및 패키지 버전을 참조해야 합니다. [명명된 예약 섀도우](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-to-use-software-package-catalog.html#reserved-named-shadow)를 업데이트할 때도 이러한 권한이 필요합니다. 각 엔터티에 Amazon 리소스 이름(ARN)을 포함하여 소프트웨어 패키지 및 패키지 버전을 참조합니다.

**참고**  
정책에서 패키지 버전 API 직접 호출(예: [CreatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_CreatePackageVersion.html), [UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html), [DeletePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_DeletePackageVersion.html))에 대한 권한을 부여하려는 경우, 소프트웨어 패키지와 패키지 버전 ARN을 *둘 다* 정책에 포함해야 합니다. 정책에서 패키지 버전 API 직접 호출(예: [CreatePackage](https://docs.aws.amazon.com/iot/latest/apireference/API_CreatePackage.html), [UpdatePackage](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackage.html), [DeletePackage](https://docs.aws.amazon.com/iot/latest/apireference/API_DeletePackage.html))에 대한 권한을 부여하려는 경우 소프트웨어 패키지 ARN만 정책에 포함해야 합니다.

소프트웨어 패키지 및 패키지 버전 ARN을 다음과 같이 구성하세요.
+ 소프트웨어 패키지: `arn:aws:iot:<region>:<accountID>:package/<packageName>/package` 
+ 패키지 버전: `arn:aws:iot:<region>:<accountID>:package/<packageName>/version/<versionName>` 

**참고**  
이 정책에 포함할 수 있는 기타 관련 권한도 있습니다. 예를 들어, `job`, `thinggroup` 및 `jobtemplate`에 대한 ARN을 포함할 수 있습니다. 자세한 내용과 정책 옵션의 전체 목록은 [AWS IoT 작업을 사용하여 사용자 및 디바이스 보안을 참조하세요](https://docs.aws.amazon.com/iot/latest/developerguide/iot-jobs-security.html).

예를 들어 다음과 같이 명명된 소프트웨어 패키지 및 패키지 버전이 있는 경우:
+ AWS IoT 사물: `myThing`
+ 패키지 이름: `samplePackage`
+ 버전: `1.0.0`

정책은 다음과 같을 수 있습니다.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:createPackage",
                "iot:createPackageVersion",
                "iot:updatePackage",
                "iot:updatePackageVersion"
            ],
            "Resource": [
               "arn:aws:iot:us-east-1:111122223333:package/samplePackage",
               "arn:aws:iot:us-east-1:111122223333:package/samplePackage/version/1.0.0"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:GetThingShadow",
                "iot:UpdateThingShadow"
            ],
            "Resource": "arn:aws:iot:us-east-1:111122223333:thing/myThing/$package"
        }
    ]
}
```

## AWS IoT 패키지 버전을 배포할 수 있는 작업 권한
<a name="job-rights-deploy-versions"></a>

보안을 위해 패키지 및 패키지 버전을 배포할 권한을 부여하고 배포가 허용된 특정 패키지 및 패키지 버전의 이름을 지정하는 것이 중요합니다. 이를 위해서는 패키지 버전으로 작업을 배포할 권한을 부여하는 IAM 역할과 정책을 만듭니다. 정책은 대상 패키지 버전을 리소스로 지정해야 합니다.

**IAM 정책**

IAM 정책은 `Resource` 섹션에 명명된 패키지 및 버전을 포함하는 작업을 생성할 권한을 부여합니다.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:CreateJob",
                "iot:CreateJobTemplate"
            ],
            "Resource":[
                "arn:aws:iot:*:111122223333:job/<jobId>",
                "arn:aws:iot:*:111122223333:thing/<thingName>/$package",
                "arn:aws:iot:*:111122223333:thinggroup/<thingGroupName>",
                "arn:aws:iot:*:111122223333:jobtemplate/<jobTemplateName>",
                "arn:aws:iot:*:111122223333:package/<packageName>/version/<versionName>"
            ]
        }
    ]
}
```

**참고**  
소프트웨어 패키지와 패키지 버전을 제거하는 작업을 배포하려면 다음과 같이 패키지 버전이 `$null`인 ARN을 승인해야 합니다.

```
arn:aws:iot:<regionCode>:111122223333:package/<packageName>/version/$null
```

## AWS IoT 예약된 명명된 섀도우를 업데이트하는 작업 권한
<a name="job-rights-update-reserved-named-shadow"></a>

작업이 성공적으로 완료되었을 때 작업이 사물의 명명된 예약 섀도우를 업데이트할 수 있게 하려면 IAM 역할 및 정책을 생성해야 합니다. AWS IoT 콘솔에서 이 작업을 수행하는 방법은 두 가지입니다. 첫 번째는 콘솔에서 소프트웨어 패키지를 만드는 것입니다. **패키지 관리를 위한 종속성 활성화** 대화 상자가 표시되면 기존 역할을 사용하거나 새 역할을 만들 수 있습니다. 또는 AWS IoT 콘솔에서 **설정**을 선택하고 **인덱싱 관리**를 선택한 다음 **디바이스 패키지 및 버전 인덱싱 관리**를 선택합니다.

**참고**  
 AWS IoT 작업이 성공적으로 완료되면 작업 서비스가 예약된 명명된 섀도우를 업데이트하도록 선택하면 API 호출이 **디바이스 섀도우 및 레지스트리 작업에** 포함되며 비용이 발생할 수 있습니다. 자세한 내용은 [AWS IoT Core 요금](https://aws.amazon.com/iot-core/pricing/)을 참조하십시오.

**역할 생성** 옵션을 사용하는 경우 생성된 역할 이름은 `aws-iot-role-update-shadows`로 시작되며 다음 정책을 포함합니다.

**역할 설정**

**권한**  
권한 정책은 사물 섀도우를 쿼리하고 업데이트할 권한을 부여합니다. 리소스 ARN의 `$package` 파라미터는 명명된 예약 섀도우를 대상으로 합니다.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iot:DescribeEndpoint",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:GetThingShadow",
                "iot:UpdateThingShadow"
            ],
            "Resource": [
            "arn:aws:iot:us-east-1:111122223333:thing/<thingName>/$package"
            ]
        }
    ]
}
```

**신뢰 관계**  
권한 정책 외에도 역할에는 엔터티가 역할을 수임하고 명명된 예약 섀도우를 업데이트할 수 있도록 AWS IoT Core 와의 신뢰 관계가 필요합니다.    
****  

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

**사용자 정책 설정**

**iam:PassRole 권한**  
마지막으로 [ UpdatePackageConfiguration](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageConfiguration.html) API 작업을 호출할 AWS IoT Core 때 역할을에 전달할 권한이 있어야 합니다.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iam:PassRole",
                "iot:UpdatePackageConfiguration"
            ],
            "Resource": "arn:aws:iam::111122223333:role/<roleName>"
        }
    ]
}
```

## AWS IoT Amazon S3에서 다운로드할 수 있는 작업 권한
<a name="job-rights-download-job-document"></a>

작업 문서는 Amazon S3에 저장됩니다. AWS IoT 작업을 통해 디스패치할 때이 파일을 참조합니다. AWS IoT 작업에게 파일()을 다운로드할 수 있는 권한을 제공해야 합니다`s3:GetObject`. 또한 Amazon S3와 AWS IoT 작업 간에 신뢰 관계를 설정해야 합니다. 이러한 정책을 생성하는 방법에 대한 지침은 [작업 관리](https://docs.aws.amazon.com/iot/latest/developerguide/create-manage-jobs.html)에서 [미리 서명된 URL](https://docs.aws.amazon.com/iot/latest/developerguide/create-manage-jobs.html#create-manage-jobs-presigned-URLs)을 참조하세요.

## 패키지 버전의 소프트웨어 재료 명세서를 업데이트할 수 있는 권한
<a name="job-rights-update-sbom"></a>

`Draft`, `Published`또는 `Deprecated` 수명 주기 상태에서 패키지 버전의 소프트웨어 재료표를 업데이트하려면 Amazon S3에서 새 소프트웨어 재료표를 찾고 패키지 버전을 업데이트하기 위한 AWS Identity and Access Management 역할 및 정책이 필요합니다 AWS IoT Core.

먼저 업데이트된 소프트웨어 재료표를 버전이 지정된 Amazon S3 버킷에 넣고 `sboms` 파라미터가 포함된 `[UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)` API 작업을 직접적으로 호출합니다. 그런 다음 권한 있는 보안 주체가 생성한 IAM 역할을 수임하고, Amazon S3에서 업데이트된 소프트웨어 재료표를 찾고, AWS IoT Core for Software Package Catalog에서 패키지 버전을 업데이트합니다.

이 업데이트를 수행하려면 다음 정책이 필요합니다.

**정책**
+ Amazon S3의 버전 버킷에서 업데이트된 소프트웨어 재료표를 찾고 AWS IoT Core에서 패키지 버전을 업데이트할 수 있도록 IAM 역할을 수임하는 권한 있는 위탁자와 신뢰 관계를 설정하는 **신뢰 정책** 정책입니다.
  +   
****  

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

    ```
    {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "Service": "iot.amazonaws.com"
            },
                "Action": "sts:AssumeRole"
            }
        ]
    }
    ```
+ **권한 정책**: 패키지 버전에 대한 소프트웨어 자재 명세서가 저장되는 Amazon S3 버전 버킷에 액세스하고 AWS IoT Core에서 패키지 버전을 업데이트하는 정책입니다.
  +   
****  

    ```
    {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "s3:GetObject"
                ],
                "Resource": [
                    "arn:aws:s3:::awsexamplebucket1"
                ]
            }
        ]
    }
    ```
  +   
****  

    ```
    {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "iot:UpdatePackageVersion"
                ],
                "Resource": [
                    "arn:aws:iot:*:111122223333:package/<packageName>/version/<versionName>"
                ]
            }
        ]
    }
    ```
+ **역할 권한 전달**: `[UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)` API 작업을 호출할 AWS IoT Core 때 IAM 역할을 Amazon S3 및에 전달할 수 있는 권한을 부여하는 정책입니다.
  +   
****  

    ```
    {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "iam:PassRole",
            "s3:GetObject"
          ],
          "Resource": [
            "arn:aws:s3:::awsexamplebucket1"
          ]
        }
      ]
    }
    ```
  +   
****  

    ```
    {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "iam:PassRole",
                    "iot:UpdatePackageVersion"
                ],
                "Resource": "arn:aws:iam::111122223333:role/<roleName>"
            }
        ]
    }
    ```

**참고**  
`Deleted` 수명 주기 상태로 전환된 패키지 버전에서는 소프트웨어 재료표를 업데이트할 수 없습니다.

 AWS 서비스에 대한 IAM 역할 생성에 대한 자세한 내용은 [AWS 서비스에 권한을 위임할 역할 생성을 참조하세요](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html).

Amazon S3 버킷 생성 및 객체 업로드에 대한 자세한 내용은 [버킷 생성](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) 및 [객체 업로드](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html)를 참조하세요.