IAM によるアクセス制御

概要

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

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

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

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

権限

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

必要な権限

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

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

ロール

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

IAM ロール 権限

roles/transcoder.viewer

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

resourcemanager.projects.get

resourcemanager.projects.list

transcoder.jobTemplates.get

transcoder.jobTemplates.list

transcoder.jobTemplates.listEffectiveTags

transcoder.jobTemplates.listTagBindings

transcoder.jobs.get

transcoder.jobs.list

transcoder.jobs.listEffectiveTags

transcoder.jobs.listTagBindings

roles/transcoder.admin

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

resourcemanager.projects.get

resourcemanager.projects.list

transcoder.*

  • transcoder.jobTemplates.create
  • transcoder.jobTemplates.createTagBinding
  • transcoder.jobTemplates.delete
  • transcoder.jobTemplates.deleteTagBinding
  • transcoder.jobTemplates.get
  • transcoder.jobTemplates.list
  • transcoder.jobTemplates.listEffectiveTags
  • transcoder.jobTemplates.listTagBindings
  • transcoder.jobs.create
  • transcoder.jobs.createTagBinding
  • transcoder.jobs.delete
  • transcoder.jobs.deleteTagBinding
  • transcoder.jobs.get
  • transcoder.jobs.list
  • transcoder.jobs.listEffectiveTags
  • transcoder.jobs.listTagBindings

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 コンソールの [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 がトピックにアクセスできるようになります。