

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon Chime SDK での AppKey と TenantID の使用
<a name="app-keys-tenant-ids"></a>

AppKey と TenantID を使用して、ネットワークからのアクセスを特定のアプリケーションの Amazon Chime SDK WebRTC メディアセッションに制限できます。

開発者は、UDP 経由でリアルタイムな動画を送受信するアプリケーションを作成するために、Amazon Chime SDK を使用します。アプリケーションユーザーには [https://docs.aws.amazon.com/general/latest/gr/aws-ip-ranges.html](https://docs.aws.amazon.com/general/latest/gr/aws-ip-ranges.html) サブネットへの UDP アクセスが必要です。組織 (ネットワーク所有者) で AppKey と TenantID を使用して、自社のネットワークからのアクセスを特定のアプリケーションの WebRTC メディアセッションのみに制限できます。

**例 1: AppKey を使用する**  
アプリ A とアプリ B で Amazon Chime SDK が使用されている場合、アプリ A で自社のネットワークから WebRTC メディアセッションにアクセスすることを許可し、アプリ B と Amazon Chime SDK を使用するその他のアプリケーションをブロックできます。組織で、アプリ A の AppKey と HTTPS プロキシを使用してこれを実行できます。詳細については、このトピックで後述する「[アクセスを特定のアプリケーションに制限する](#limit-app-access)」を参照してください。

**例 2: AppKey と TenantID を使用する**  
アプリ A が一般に公開され、多くの顧客によって使用されている場合は、組織でユーザーがセッションに参加している場合にのみ、アプリ A で自社のネットワークから WebRTC メディアセッションにアクセスできるようにして、他のすべてのアプリ A セッションへのアクセスをブロックするとよいでしょう。組織で、アプリケーションの AppKey、組織の TenantID、HTTPS プロキシを使用してこれを実行できます。詳細については、このトピックで後述する「[アクセスを特定のテナントに制限する](#limit-tenant-access)」を参照してください。

AppKey と TenantID を使用するには、リクエストに HTTPS ヘッダーを追加できる HTTPS プロキシサーバーが必要です。以下の図に示すのは、AppKey と TenantID の仕組みです。

![\[AppKey と TenantID でアプリケーションとテナントの WebRTC セッションへのアクセスを制御する方法を示す図。\]](http://docs.aws.amazon.com/ja_jp/chime-sdk/latest/dg/images/app-key-diagram.png)


この図では、アプリ A にはテナント A-1 と A-2 があり、アプリ B にはテナント B-1 と B-2 があります。この場合、AppKey によってアプリ A のみが WebRTC メディアセッションへの接続を許可され、テナント ID ではテナント A-1 のみをセッションに対して許可します。

**Topics**
+ [アクセスを特定のアプリケーションに制限する](#limit-app-access)
+ [アクセスを特定のテナントに制限する](#limit-tenant-access)
+ [HTTPS ヘッダーの例](#header-examples)

## アクセスを特定のアプリケーションに制限する
<a name="limit-app-access"></a>

*AppKey* は、Amazon Chime が AWS アカウントごとに作成する一貫性のある一意の 256 ビット値です。AppKey がない場合は、Amazon サポートにリクエストできます。複数の AWS アカウントがある場合は、すべてのアカウントに共通の AppKey をリクエストできます。

**注記**  
AppKey を安全に公開して共有し、他の組織で自社のネットワークからのアクセスを制限できるようにすることが可能です。

Amazon Chime SDK では、セッションの作成に使用された AWS アカウント ID に基づいて、各 WebRTC メディアセッションを AppKey に自動で関連付けます。ネットワークからのアクセスを特定のアプリケーションに制限するには、次の手順を実行します。

1. すべてのアウトバウンドリクエストを HTTPS プロキシサーバー経由で `CHIME_MEETINGS` サブネットにルーティングします。

1. `CHIME_MEETINGS` サブネットへのすべてのアウトバウンドリクエストに次のヘッダーを追加するようにプロキシサーバーを設定します。

   `X-Amzn-Chime-App-Keys:` *許可されている AppKey のカンマ区切りリスト*。

   例えば、`X-Amzn-Chime-App-Keys:AppKey-A,AppKey-B,AppKey-C` では、それらの AppKey に関連付けられているアプリにサブネットへのアクセスを許可します。

Amazon Chime SDK では `X-Amzn-Chime-App-Keys` ヘッダーに対するインバウンド WebRTC メディアセッションの接続を確認し、次のロジックを適用します。

1. `X-Amzn-Chime-App-Keys` ヘッダーが存在し、セッションの AppKey が含まれている場合は、接続を承認します。

1. `X-Amzn-Chime-App-Keys` ヘッダーが存在するものの、セッションの AppKey が含まれていない場合は、403 エラーで接続を拒否します。

1. `X-Amzn-Chime-App-Keys` ヘッダーが存在しない場合、接続を受け入れます。ユーザーが組織のネットワークの外部からアプリケーションにアクセスできる場合は、セッションにもアクセスできます。

## アクセスを特定のテナントに制限する
<a name="limit-tenant-access"></a>

*TenantID* は開発者が作成した不透明な識別子です。TenantID については、次の点に注意してください。
+ TenantID はアプリケーション間で一意であることが保証されていないため、TenantID リストごとに AppKey を指定する必要があります。
+ TenantID では大文字と小文字が区別されます。開発者の指示どおりに正確に入力してください。
+ 組織で複数のアプリケーションへのアクセスを制限できますが、それらのアプリケーションの一部には TenantID しか指定できません。TenantID のないアプリケーションは、すべての WebRTC メディアセッションに接続できます。

メディアセッションを TenantID に関連付けるには、開発者はまず `TenantIds` プロパティと TenantID のリストを [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_meeting-chime_CreateMeeting.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_meeting-chime_CreateMeeting.html) または [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_meeting-chime_CreateMeetingWithAttendees.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_meeting-chime_CreateMeetingWithAttendees.html) リクエストに追加する必要があります。

以下に例を示します。

`CreateMeeting(..., TenantIds : [ tenantId1, tenantId2 ] )`

組織のネットワークからのアクセスを特定のアプリケーションにおける自社の WebRTC メディアセッションに制限するには、次の手順を実行します。

1. 「[アクセスを特定のアプリケーションに制限する](#limit-app-access)」のステップを実行してください。

1. アウトバウンド接続に `X-Amzn-Chime-Tenants` ヘッダーを追加するように HTTPS プロキシサーバーを設定します。この例に示すように区切られた AppKey と TenantID のリストを含めます。`X-Amzn-Chime-Tenants: AppKey-A:tenantId-A-1,tenantId-A-2;AppKey-B:tenantId-B-1,tenantId-B-2`

Amazon Chime SDK では `X-Amzn-Chime-Tenants` ヘッダーに対するインバウンド WebRTC メディアセッションの接続を確認し、次のロジックを適用します。
+ ヘッダーにセッションの `AppKey:tenantId` が含まれている場合は、接続を承認します。
+ ヘッダーにセッションの `AppKey` が含まれているものの、`tenantId` に一致しない場合は、403 エラーで接続を拒否します。
+ ヘッダーにセッションの `AppKey` が含まれていない場合は、接続を承認します。
+ ヘッダーにセッションの `AppKey` が含まれていても、そのセッションに 1 つ以上の許可された `tenantId` がない場合は、403 エラーで接続を拒否します。これは開発者のバグである可能性があります。
+ ヘッダーが存在しない場合、接続を受け入れます。ユーザーが組織のネットワークの外部からアプリケーションにアクセスできる場合は、すべてのセッションにもアクセスできます。

## HTTPS ヘッダーの例
<a name="header-examples"></a>

次の例では、HTTPS ヘッダーで AppKey と TenantID を使用する方法をいくつか示しています。

**1 つのアプリと 1 つのテナント**  
`X-Amzn-Chime-App-Keys: AppKey`  
`X-Amzn-Chime-Tenants: AppKey:orgId`  
ユーザーは、指定されたアプリで組織の WebRTC メディアセッションにのみアクセスできます。その他のアプリはすべてブロックされます。

**1 つのアプリと 2 つのテナント**  
`X-Amzn-Chime-App-Keys: AppKey`  
`X-Amzn-Chime-Tenants: AppKey:engineeringId,salesId`  
ユーザーは、指定されたアプリでエンジニアリングとセールスのメディアセッションにのみアクセスできます。その他のアプリはすべてブロックされます。

**2 つのアプリ、1 つは単一のテナントに限定**  
`X-Amzn-Chime-App-Keys: AppKey1,AppKey2`  
`X-Amzn-Chime-Tenants: AppKey1:orgId`  
ユーザーは、アプリ 1 では組織のメディアセッションにのみアクセスでき、アプリ 2 ではどのセッションにもアクセスできます。その他のアプリはすべてブロックされます。