多くの Google Cloud サービスと同様に、Developer Device Platform には専用のサービス エージェントがいます。このページでは、DDP サービス エージェントの仕組み、実行できること、リソースを共有する方法について説明します。
権限
DDP がプロジェクトで初めて使用されると、システムは service-PROJECT_ID@gcp-sa-devicerun. という名前のサービス エージェント タイプのサービス アカウントを作成します。
Device Run API(devicerun.googleapis.com)を有効にすると、Google Cloud はサービス エージェントを自動的にプロビジョニングし、プロジェクト レベルで roles/devicerun.serviceAgent ロールを割り当てます。
このサービス エージェントには、Developer Device Platform が起動される Google Cloud プロジェクトに対する権限が付与されます。サービス エージェントは、ユーザーの認証情報ではなく、独自に所有する認証情報を使用して次の処理を行います。
- Cloud Storage バケットとオブジェクトの読み取りと書き込み
- Cloud Storage の入力ファイルを内部システムにダウンロードする
- 内部システムから Cloud Storage 出力バケットにファイルをアップロードする
つまり、Cloud Storage バケットとファイルにアクセスできるが、そのバケットが DDP で使用されているプロジェクトとは異なる Google Cloud プロジェクトに属している可能性があります。個々のバケットにアクセス制御を追加することもできます。
そのため、Developer Device Platform サービス エージェントはこれらのリソースにアクセスできない可能性があります。こちらの手順に沿って、特定のバケットへのアクセス権を DDP サービス エージェントと共有します。
アクセス権の共有
DDP 対応プロジェクトでテストにファイルを含める方法については、デバイスランをご覧ください。Cloud Storage バケットが DDP プロジェクトとは異なるGoogle Cloud プロジェクトにあり、Device Run でこれらのファイルを読み取るようにする場合は、ここに記載されているように、DDP リクエストが開始されたプロジェクトのサービス エージェントに roles/storage.objectViewer を付与する必要があります。
サービス エージェントに Storage オブジェクト閲覧者を付与する: ファイルを含む Cloud Storage バケットに対する Storage Object Viewer(roles/storage.objectViewer)ロールが DDP サービス エージェントに付与されていることを確認します。
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
--member="serviceAccount:service-PROJECT_ID@gcp-sa-devicerun." \ --role="roles/storage.objectViewer"
検証
ワークフローに戻り、Device Run が必要なファイルにアクセスできることを確認します。サービス エージェントが指定されたファイルにアクセスできない場合、テストは開始されません。
サポート ドキュメント
- サービス アカウントのタイプ: サービス エージェント - Google Cloud内でのサービス エージェントの動作について学習する
- サービス エージェント - すべての Google Cloudサービス エージェントを表示する
- Cloud Storage のロールと権限 - Cloud Storage 関連のすべてのロールと権限を確認する