

# IVS 中的 Identity and Access Management
<a name="security-iam"></a>

AWS Identity and Access Management (IAM) 是一種 AWS 服務，可協助帳戶管理員安全地控制對 AWS 資源的存取。每項 AWS 資源均由某個 AWS 帳戶所持有，而建立或存取資源的許可則由許可政策管理。IAM 帳戶管理員可以控制經過身分驗證 (已登入) 和得到授權 (具有許可) 來使用 Amazon IVS 資源的人員。IAM 是 AWS 帳戶可享的一項功能，無須額外付費。

**重要事項**：如需完整資訊，請參閱 [AWS IAM 產品頁面](https://aws.amazon.com/iam/)、《[IAM 使用者指南](https://docs.aws.amazon.com/IAM/latest/UserGuide/)》和[簽署 AWS API 請求](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-signing.html)。在本節中，我們還會提供 *IAM 使用者指南*特定章節的連結。在繼續之前，您應該熟悉此材料。

## 目標對象
<a name="security-iam-audience"></a>

根據您在 Amazon IVS 中所進行的工作而定，IAM 的使用方式會不同。
+ **服務使用者** – 若您使用 Amazon IVS 來執行您的任務，您的管理員可以提供您需要的登入資料和許可。隨著您為了執行作業而使用的 Amazon IVS 功能數量變多，您可能會需要額外的許可。了解存取的管理方式可協助您向管理員請求正確的許可。如果您無法存取 Amazon IVS 中的功能，請參閱 [疑難排解](#security-iam-troubleshooting)。
+ **服務管理員** – 若您在公司負責管理 Amazon IVS 資源，您可能擁有 Amazon IVS 的完整存取權。您的任務是要判斷員工應存取哪些 Amazon IVS 功能和資源。您接著必須將請求提交給您的 IAM 管理員，來變更您服務使用者的許可。檢閱此頁面上的資訊，了解基本 IAM 概念。若要進一步了解貴公司可搭配 Amazon IVS 使用 IAM 的方式，請參閱 [Amazon IVS 如何與 IAM 搭配運作](#security-iam-how-ivs-works)。
+ **IAM 管理員** – 如果您是 IAM 管理員，您可寫入政策以管理 Amazon IVS 存取權。若要檢視您可以在 IAM 中使用的基於 Amazon IVS 身分的政策範例，請參閱[基於身分的政策範例](#security-iam-policy-examples)。

## Amazon IVS 如何與 IAM 搭配運作
<a name="security-iam-how-ivs-works"></a>

在您發出 Amazon IVS API 請求之前，您必須先建立一個或多個 IAM 身分*身分* (使用者、群組和角色) 和 IAM *政策*，然後將政策連接至身分。傳播許可最多需要幾分鐘的時間；在此之前，API 請求會遭到拒絕。

若要更好地了解 Amazon IVS 如何與 IAM 搭配運作，請參閱 *IAM 使用者指南*中的[與 IAM 搭配運作的 AWS 服務](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)。

## 身分
<a name="security-iam-identities"></a>

您可建立的 IAM 身分，以便為 AWS 帳戶中的人員和程序提供身分驗證。IAM 群組是 IAM 使用者集合，您可將它們視為單位進行管理。請參閱 *IAM 使用者指南*中的身分[身分 (使用者、群組和角色)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html)。

## 政策
<a name="security-iam-policies"></a>

請參閱 *IAM 使用者指南*中的以下章節：
+ [存取管理](https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html) — 全部關於政策。
+ [Amazon IVS 的動作、資源和條件金鑰](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoninteractivevideoservice.html)
+ [AWS 全域條件內容金鑰](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) 
+ [IAM JSON 政策元素參考](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html) — 您可以在 JSON 政策中使用的所有元素。

預設情況下，IAM 使用者和角色沒有建立或修改 Amazon IVS 資源 (甚至變更他們自己的密碼) 的許可。他們也無法使用 AWS 主控台、AWS CLI 或 AWS API 執行任務。IAM 管理員必須建立 IAM 政策，授予使用者和角色在指定資源上執行特定 API 操作的所需許可。

IAM 政策定義該動作的許可，無論使用何種方法來執行操作。例如，假設您有一個允許 `iam:GetRole` 動作的政策。具備該政策的使用者便可以從 AWS 管理主控台、AWS CLI 或 AWS API 取得角色資訊。

政策是由*元素*組成的 JSON 許可政策文件。Amazon IVS 支援三種元素：
+ **動作** — Amazon IVS 政策動作在動作之前使用 `ivs` 字首。例如，若要授予某人使用 Amazon IVS `CreateChannel` API 方法建立 Amazon IVS 頻道的許可，請在該人員的政策中包括 `ivs:CreateChannel` 動作。政策陳述式必須包含 `Action` 或 `NotAction` 元素。
+ **資源** — Amazon IVS 頻道資源具有以下 [ARN](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html) 格式：

  ```
  arn:aws:ivs:${Region}:${Account}:channel/${channelId}
  ```

  例如，若要在陳述式中指定 `VgNkEJgOVX9N` 頻道，請使用此 ARN：

  ```
  "Resource": "arn:aws:ivs:us-west-2:123456789012:channel/VgNkEJgOVX9N"
  ```

  有些 Amazon IVS 動作無法對特定資源執行，例如用來建立資源的動作。在那些情況下，您必須使用萬用字元 (`*`)：

  ```
  "Resource":"*"
  ```
+ **條件** — Amazon IVS 支援某些全域條件金鑰：`aws:RequestTag`、`aws:TagKeys` 和 `aws:ResourceTag`。

您可以在政策中使用變數做為預留位置。例如，您可以只在使用者使用其 IAM 使用者名稱標記時，將存取資源的許可授予該 IAM 使用者。請參閱 *IAM 使用者指南*中的[變數和標籤](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html)。

Amazon IVS 提供 AWS 受管政策，可用於向身分授予一組預先設定的許可 (唯讀或完整存取權)。您可以選擇使用受管政策，而非下面所示的身分型政策。如需詳細資訊，請參閱 [Amazon IVS 的受管政策](security-iam-awsmanpol.md)。

## 以 Amazon IVS 標籤為基礎的授權
<a name="security-iam-authorization"></a>

您可以將標籤連接至 Amazon IVS 資源，或是在請求中將標籤傳遞至 Amazon IVS。若要根據標籤控制存取，請使用 `aws:ResourceTag/key-name`、`aws:RequestTag/key-name` 或 `aws:TagKeys` 條件金鑰，在政策的條件元素中，提供標籤資訊。如需標記 Amazon IVS 資源的詳細資訊，請參閱 [IVS 低延遲串流 API 參考](https://docs.aws.amazon.com/ivs/latest/LowLatencyAPIReference/Welcome.html)、[IVS 即時串流 API 參考](https://docs.aws.amazon.com/ivs/latest/RealTimeAPIReference/Welcome.html)，以及 [IVS 聊天功能 API 參考](https://docs.aws.amazon.com/ivs/latest/ChatAPIReference/Welcome.html)中的「標記」。

如需範例，請參閱 [根據標籤檢視 Amazon IVS 頻道](#security-iam-policy-examples-tags)。

## 角色
<a name="security-iam-roles"></a>

請參閱 *IAM 使用者指南*中的 [IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)和[臨時安全登入資料](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html)。

*IAM 角色*是您 AWS 帳戶中具備特定許可的實體。

Amazon IVS 支援使用*臨時安全登入資料*。您可以搭配聯合使用暫時登入資料登入、擔任 IAM 角色，或是擔任跨帳戶角色。您取得暫時安全登入資料的方式是透過呼叫 [AWS Security Token Service](https://docs.aws.amazon.com/STS/latest/APIReference/welcome.html) API 操作 (例如 `AssumeRole` 或 `GetFederationToken`)。

## 特權和非特權存取
<a name="security-iam-privileged-access"></a>

API 資源擁有特權存取。可以透過私有頻道設定非特權播放存取；請參閱[設定私有頻道](private-channels.md)。

## 政策的最佳實務
<a name="security-iam-policy-best-practices"></a>

請參閱 [IAM 使用者指南](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)中的 *IAM 最佳實務*。

基於身分的政策相當強大。它們可以判斷您帳戶中的某個人員是否可以建立、存取或刪除 Amazon IVS 資源。這些動作可能會讓您的 AWS 帳戶產生成本。請遵循下列建議：
+ **授予最低權限** – 當您建立自訂政策時，請只授予執行任務所需要的許可。以最小一組許可開始，然後依需要授予額外的許可。如此做比一開始使用太寬鬆的許可更為安全，然後稍後再嘗試將它們限縮。尤其是，保留 `ivs:*` 進行管理員存取；不要在應用程式中使用它。
+ **為敏感操作啟用多重要素驗證 (MFA)** – 為了增加安全，請要求 IAM 使用者使用 MFA 來存取敏感資源或 API 操作。
+ **使用政策條件以增加安全** – 在切實可行的範圍中，請定義允許存取資源的基於身分的政策條件。例如，您可以撰寫條件，來指定必須發出各種請求的可允許 IP 地址範圍。您也可以撰寫條件，只在指定的日期或時間範圍內允許請求，或要求使用 SSL 或 MFA。

## 基於身分的政策範例
<a name="security-iam-policy-examples"></a>

### 使用 Amazon IVS 主控台。
<a name="security-iam-policy-examples-console"></a>

若要存取 Amazon IVS 主控台，您必須有一組符合最低限制的許可，讓您可以列出並檢視您的 AWS 帳戶中 Amazon IVS 資源的詳細資訊。如果您建立比最低必要許可更嚴格的基於身分的政策，則對於具有該政策的身分而言，主控台將無法如預期運作。若要確保存取 Amazon IVS 主控台，請將以下政策連接到身分 (請參閱 *IAM 使用者指南*中的[新增和移除 IAM 許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html))。

使用以下政策的各部分可存取：
+ 所有 Amazon IVS API 操作
+ 您的 Amazon IVS [服務配額](service-quotas.md)
+ IVS 自動錄製到 S3 功能 (低延遲串流) 和 IVS 複合錄製功能 (即時串流) 所需的 Amazon S3 端點。
+ 自動錄製到 S3 服務連結角色建立
+ Amazon CloudWatch 為您的即時串流工作階段取得指標

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": "ivs:*",
      "Effect": "Allow",
      "Resource": "*"
    },
    {
      "Action": [
        "servicequotas:ListServiceQuotas"
      ],
      "Effect": "Allow",
      "Resource": "*"
    },
    {
      "Action": [
        "s3:CreateBucket",
        "s3:DeleteBucketPolicy",
        "s3:GetBucketLocation",
        "s3:GetBucketPolicy",
        "s3:ListAllMyBuckets",
        "s3:PutBucketPolicy"
      ],
      "Effect": "Allow",
      "Resource": "*"
    },
    {
      "Action": [
        "iam:AttachRolePolicy",
        "iam:CreateServiceLinkedRole",
        "iam:PutRolePolicy"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:iam::*:role/aws-service-role/ivs.amazonaws.com/AWSServiceRoleForIVSRecordToS3*"
    },
    {
      "Action": [
        "cloudwatch:GetMetricData"
      ],
      "Effect": "Allow",
      "Resource": "*"
    },
    {
      "Action": [
        "lambda:AddPermission",
        "lambda:ListFunctions"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}
```

------

### 允許使用者檢視自己的許可
<a name="security-iam-policy-examples-permissions"></a>

此範例會示範一個政策，它允許 IAM 使用者檢視連接到其使用者身分的內嵌及受管政策。此政策包含在 AWS 主控台上，或是使用 AWS CLI 或 AWS API 透過編寫程式的方式完成此動作的許可。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Sid": "ViewOwnUserInfo",
         "Effect": "Allow",
         "Action": [
            "iam:GetUserPolicy",
            "iam:ListGroupsForUser",
            "iam:ListAttachedUserPolicies",
            "iam:ListUserPolicies",
            "iam:GetUser"
         ],
         "Resource": [
            "arn:aws:iam:*:*:user/${aws:username}"
         ]
      },
      {
         "Sid": "NavigateInConsole",
         "Effect": "Allow",
         "Action": [
            "iam:GetGroupPolicy",
            "iam:GetPolicyVersion",
            "iam:GetPolicy",
            "iam:ListAttachedGroupPolicies",
            "iam:ListGroupPolicies",
            "iam:ListPolicyVersions",
            "iam:ListPolicies",
            "iam:ListUsers"
         ],
         "Resource": "*"
      }
   ]
}
```

------

### 存取 Amazon IVS 頻道
<a name="security-iam-policy-examples-channel"></a>

在此，您希望授予 AWS 帳戶中的 IAM 使用者存取您的其中一個 Amazon IVS 頻道：`VgNkEJgOVX9N`。您也希望允許使用者停止串流 (`ivs:StopStream`)、新增中繼資料 (`ivs:PutMetadata`)，並更新頻道 (`ivs:UpdateChannel`)。該政策也授予 Amazon IVS 主控台所需的許可：`ivs:ListChannels`、`ivs:ListStreams`、`ivs:GetChannel` 和 `ivs:GetStream`。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"ListChannelsInConsole",
         "Effect":"Allow",
         "Action":[
            "ivs:ListChannels",
            "ivs:ListStreams"

         ],
         "Resource":"arn:aws:ivs:*:*:channel/*"
      },
      {
         "Sid":"ViewSpecificChannelInfo",
         "Effect":"Allow",
         "Action":[
            "ivs:GetChannel",
            "ivs:GetStream"
         ],
         "Resource":"arn:aws:ivs:*:*:channel/VgNkEJgOVX9N"
      },
      {
         "Sid":"ManageChannel",
         "Effect":"Allow",
         "Action":[
            "ivs:StopStream",
            "ivs:PutMetadata",
            "ivs:UpdateChannel"
         ],
         "Resource":"arn:aws:ivs:*:*:channel/VgNkEJgOVX9N" 
      }
   ]
}
```

------

### 根據標籤檢視 Amazon IVS 頻道
<a name="security-iam-policy-examples-tags"></a>

您可以在基於身分的政策中使用條件，根據標籤控制 Amazon IVS 的存取權。此範例會示範允許檢視頻道的政策。此政策也會授予在 Amazon IVS 主控台上完成此動作的必要許可。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Sid": "ListWidgetsInConsole",
         "Effect": "Allow",
         "Action": "ivs:ListChannels",
         "Resource": "arn:aws:ivs:*:*:channel/*"
      },
      {
         "Sid": "ViewChannelIfOwner",
         "Effect": "Allow",
         "Action": "ivs:GetChannel",
         "Resource": "arn:aws:ivs:*:*:channel/*",
         "Condition": {
            "StringEquals": {"aws:ResourceTag/Owner": "${aws:username}"}
         }
      }
   ]
}
```

------

您可以將此政策連接到您帳戶中的 IAM 使用者。但是，只有在頻道標籤的值是該使用者的使用者名稱時，才會授予許可。如果名為 richard-roe 的使用者嘗試檢視 Amazon IVS 頻道，該頻道必須標記 `Owner=richard-roe` 或 `owner=richard-roe`；否則他便會被拒絕存取。(條件標籤金鑰 `Owner` 符合 `Owner` 和`owner`，因為條件金鑰名稱不區分大小寫。)

## 疑難排解
<a name="security-iam-troubleshooting"></a>

請使用以下資訊來協助您診斷和修正使用 Amazon IVS 和 IAM 時可能遇到的常見問題。
+ **我未獲授權，不得在 Amazon IVS 中執行動作。**

  當 mateojackson IAM 使用者嘗試使用 AWS 主控台來檢視頻道詳細資訊但卻沒有 `ivs:GetChannel` 許可時，會發生以下範例錯誤。

  ```
  User: arn:aws:iam::123456789012:user/mateojackson is not authorized to perform: ivs:GetChannel on resource: arn:aws:ivs:us-west-2:123456789012:channel/VgNkEJgOVX9N
  ```

  在此情況下，Mateo 會要求管理員更新他的政策，允許他使用 `ivs:GetChannel` 動作存取 `arn:aws:ivs:us-west-2:123456789012:channel/VgNkEJgOVX9N` 資源。
+ **我想要檢視我的存取金鑰**。

  在您建立 IAM 使用者存取金鑰後，您可以隨時檢視您的存取金鑰 ID。但是，您無法再次檢視您的私密存取金鑰。若您遺失了秘密金鑰，您必須建立新的存取金鑰對。存取金鑰有兩部分：
  + 存取金鑰 ID (例如，`AKIAIOSFODNN7EXAMPLE`)
  + 私密存取金鑰 (例如，`wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY`)

  如同使用者名稱和密碼，您必須一起使用存取金鑰 ID 和私密存取金鑰來驗證您的請求。就如對您的使用者名稱和密碼一樣，安全地管理您的存取金鑰。

  ***重要：勿向第三方提供您的存取金鑰，而甚至讓他人[找到您的正式使用者 ID](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-identifiers.html#FindingCanonicalId)。如果這麼做，就可能會讓他人能夠永久存取您的帳戶。***

  建立存取金鑰對時，您會收到提示，要求您將存取金鑰 ID 和私密存取金鑰儲存在安全位置。只有在您建立的時候才可使用私密存取金鑰。若您遺失了私密存取金鑰，您必須將新的存取金鑰新增到您的 IAM 使用者。

  您最多可有兩個存取金鑰。若您已有兩個存取金鑰，您必須先刪除其中一個金鑰對，才能建立新的金鑰對。請參閱 [IAM 使用者指南](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html)中的*管理 IAM 使用者的存取金鑰*。
+ **我是管理員，想要允許其他人存取 Amazon IVS。**

  若要允許其他人存取 Amazon IVS，您必須針對需要存取的人員或應用程式建立 IAM 實體 (使用者或角色)。該人員或應用程式將使用該實體的憑證來存取 AWS。您接著必須將政策連接到實體，在 Amazon IVS 中授予正確的許可。

  若要開始使用，請參閱 *IAM 使用者指南*中的[建立您的第一個 IAM 委派使用者及群組](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html)。
+ **我想允許 AWS 帳戶外的人員存取我的 Amazon IVS 資源。**

  您可以建立一個角色，讓其他帳戶中的使用者或您組織外部的人員使用它來存取您的資源。您可以指定要允許哪些信任對象取得該角色。針對支援以資源為基礎的政策或存取控制清單 (ACL) 的服務，您可以使用那些政策來授予人員存取您資源的權限。如需相關資訊，請參閱 *IAM 使用者指南*中的這些章節：    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/ivs/latest/LowLatencyUserGuide/security-iam.html)