IAM を使用したアクセス制御

概要

Transcoder API は、Identity and Access Management(IAM)を使用してアクセスを制御します。

Transcoder API のアクセス制御は、プロジェクト レベルで構成できます。たとえば、デベロッパーにプロジェクト内のすべてのジョブを一覧表示して取得するためのアクセス権を付与できます。

IAM とその機能の詳細については、IAM のドキュメントをご覧ください。特に、IAM ポリシーの管理のセクションをご覧ください。

すべての Transcoder API メソッドでは、呼び出し元が必要な権限を持っていることが求められます。詳細については、権限ロールをご覧ください。

権限

このセクションでは、IAM でサポートされている Transcoder API 権限の概要を説明します。

必要な権限

以下の表は、Transcoder API に関係する IAM 権限の一覧を示します。

ジョブメソッド 必要な権限
jobs.create 親 Google Cloud プロジェクトに対する transcoder.jobs.create
jobs.delete 親 Google Cloud プロジェクトに対する transcoder.jobs.delete
jobs.get 親 Google Cloud プロジェクトに対する transcoder.jobs.get
jobs.list 親 Google Cloud プロジェクトに対する transcoder.jobs.list
ジョブ テンプレートのメソッド 必要な権限
jobTemplates.create 親 Google Cloud プロジェクトに対する transcoder.jobTemplates.create
jobTemplates.delete 親 Google Cloud プロジェクトに対する transcoder.jobTemplates.delete
jobTemplates.get 親 Google Cloud プロジェクトに対する transcoder.jobTemplates.get
jobTemplates.list 親 Google Cloud プロジェクトに対する transcoder.jobTemplates.list

役割

次の表に、Transcoder API の IAM ロールと、各ロールに関連付けられた権限を示します。

IAM ロール 権限

roles/transcoder.viewer

すべての Transcoder リソースの閲覧者。

resourcemanager.projects.get

resourcemanager.projects.list

transcoder.jobTemplates.get

transcoder.jobTemplates.list

transcoder.jobs.get

transcoder.jobs.list

roles/transcoder.admin

すべての Transcoder リソースに対する完全アクセス権。

resourcemanager.projects.get

resourcemanager.projects.list

transcoder.*

  • transcoder.jobTemplates.create
  • transcoder.jobTemplates.delete
  • transcoder.jobTemplates.get
  • transcoder.jobTemplates.list
  • transcoder.jobs.create
  • transcoder.jobs.delete
  • transcoder.jobs.get
  • transcoder.jobs.list

roles/owner ロールと roles/editor ロールは、roles/transcoder.admin ロールに関連付けられた権限を付与します。roles/viewer ロールは、roles/transcoder.viewer ロールに関連付けられた権限を付与します。

ロール roles/ownerroles/editorroles/viewer には、他の Google Cloud サービスに対する権限も含まれます。ロールの詳細については、ロールについてをご覧ください。

Cloud Storage と Pub/Sub へのアクセス

デフォルトで、Transcoder API は、プロジェクトの Cloud Storage バケットと Pub/Sub トピックのすべてにアクセスできます。最初のジョブを作成すると、Transcoder API は、次の命名規則を使用してサービス アカウントを作成します。

service-PROJECT_NUMBER@gcp-sa-transcoder.iam.gserviceaccount.com

PROJECT_NUMBER は、Transcoder API が有効になっているプロジェクトのプロジェクト番号です。このサービス アカウントには、Transcoder サービス エージェントのロールが付与され、以下を行うための権限があります。

  • ファイルをダウンロードしてプロジェクトの Cloud Storage バケットにアップロードする
  • プロジェクトの Pub/Sub トピックにステータスの更新を公開する

アクセスの制限

このアクセスを制限するには、サービス アカウントから Transcoder サービス エージェントのロールを削除し、より細分化されたアクセス権に置き換えます。手順は次のとおりです。

  1. Google Cloud Console で IAM ページ([権限] タブ)に移動します。
  2. Transcoder サービス エージェントのロールを持つサービス アカウントを探し、編集ボタンを選択します。
  3. サービス アカウントから Transcoder サービス エージェントのロールを削除します。
  4. 個々の Cloud Storage バケットのサービス アカウントにアクセス権を付与します。
    1. Cloud Storage ブラウザページに移動します。
    2. バケットをクリックします。
    3. [権限] タブを選択します。
    4. [追加] をクリックします。
    5. [新しいプリンシパル] ボックスに、サービス アカウントの名前を入力します。
    6. [ロール] で、[Storage オブジェクト管理者] を選択します。
    7. [保存] をクリックします。これで、Transcoder API がバケットにアクセスできるようになります。
  5. (省略可)構成済みの Pub/Sub トピックのサービス アカウントへのアクセス権を付与します。
    1. [Pub/Sub トピック] ページに移動します。
    2. トピックをクリックします。
    3. [権限] タブを選択します。
    4. [プリンシパルを追加] をクリックします。
    5. [新しいプリンシパル] ボックスに、サービス アカウントの名前を入力します。
    6. [ロール] で、[Pub/Sub パブリッシャー] を選択します。
    7. [保存] をクリックします。これで、Transcoder API がトピックにアクセスできるようになります。