ロールと権限

Google Cloud には Identity and Access Management(IAM)機能があり、特定の Google Cloud リソースに対するアクセス権を詳細に設定できるため、他のリソースへの不要なアクセスを防ぐことができます。このページでは、Cloud DNS API のロールについて説明します。IAM の詳細については、Identity and Access Management のドキュメントをご覧ください。

IAM を使用すると、セキュリティに関する最小権限の原則を導入できるため、リソースに対する必要なアクセス権のみ付与できます。

IAM では、IAM ポリシーを設定して、誰に、どのリソースに対するどのアクセス権付与するかを制御できます。IAM ポリシーは、特定のロールをユーザーに付与することで、そのユーザーに特定の権限を付与します。たとえば、特定のユーザーがドメイン ネーム システム(DNS)レコード リソースの作成と変更を行う必要があるとします。この場合、このユーザーに /roles/dns.admin ロールを付与します。このロールには、dns.changes.create 権限と dns.resourceRecordSets.create 権限が定義されているため、ユーザーはリソース レコードセットに対して作成と更新を行うことができます。一方、サポート部門の場合、必要なのは既存のリソース レコードセットの表示のみであるため、/roles/dns.reader ロールが付与されます。

Cloud DNS は、プロジェクト レベルと個々の DNS ゾーンレベルの IAM 権限をサポートしています。デフォルトの権限はプロジェクト レベルです。個々の DNS ゾーン(またはリソース)レベルで権限を構成するには、特定の IAM 権限を持つゾーンを作成するをご覧ください。

権限とロール

すべての Cloud DNS API メソッドにおいて、呼び出し元は必要な IAM 権限を持っている必要があります。権限は、ロールをユーザーやグループ、サービス アカウントに付与することで割り当てられます。基本ロールであるオーナー、編集者、閲覧者に加えて、Cloud DNS API のロールをプロジェクトのユーザーに付与できます。

権限

発信者が各メソッドを呼び出す際に必要となる権限のリストを次の表に示します。

メソッド 必要な権限
dns.changes.create。リソース レコードセットの作成に必要です。 レコードセットを含むプロジェクトに対する dns.changes.createdns.resourceRecordSets.create
dns.changes.create。リソース レコードセットの更新に必要です。 レコードセットを含むプロジェクトに対する dns.changes.createdns.resourceRecordSets.update
dns.changes.create。リソース レコードセットの削除に必要です。 レコードセットを含むプロジェクトに対する dns.changes.createdns.resourceRecordSets.delete
dns.changes.get マネージド ゾーンを含むプロジェクトに対する dns.changes.get
dns.changes.list マネージド ゾーンを含むプロジェクトに対する dns.changes.list
dns.dnsKeys.get マネージド ゾーンを含むプロジェクトに対する dns.dnsKeys.get
dns.dnsKeys.list マネージド ゾーンを含むプロジェクトに対する dns.dnsKeys.list
dns.managedZoneOperations.get マネージド ゾーンを含むプロジェクトに対する dns.managedZoneOperations.get
dns.managedZoneOperations.list マネージド ゾーンを含むプロジェクトに対する dns.managedZoneOperations.list
dns.managedZones.create マネージド ゾーンを含むプロジェクトに対する dns.managedZones.create

限定公開ゾーンを作成する場合は、ゾーンへのアクセスが許可された VPC ネットワークを含むプロジェクトごとに dns.networks.bindPrivateDNSZonedns.networks.targetWithPeeringZone も設定する必要があります。

GKE インテグレーションを使用して限定公開ゾーンを作成する場合は、GKE クラスタ スコープを構成するために dns.gkeClusters.bindPrivateDNSZone も必要です。

dns.managedZones.delete マネージド ゾーンを含むプロジェクトに対する dns.managedZones.delete
dns.managedZones.get マネージド ゾーンを含むプロジェクトに対する dns.managedZones.get
dns.managedZones.list マネージド ゾーンを含むプロジェクトに対する dns.managedZones.list
dns.managedZones.update マネージド ゾーンを含むプロジェクトに対する dns.managedZones.update

限定公開ゾーンを作成する場合は、ゾーンへのアクセスが許可された VPC ネットワークを含むプロジェクトごとに dns.networks.bindPrivateDNSZonedns.networks.targetWithPeeringZone も設定する必要があります。

GKE インテグレーションを使用して限定公開ゾーンを作成する場合は、GKE クラスタ スコープを構成するために dns.gkeClusters.bindPrivateDNSZone も必要です。

dns.policies.create ポリシーを含むプロジェクトに対する dns.policies.create

ポリシーが VPC ネットワークで作成されている場合、各 VPC ネットワークを含むプロジェクトごとに dns.networks.bindPrivateDNSPolicy も設定する必要があります。

dns.policies.delete ポリシーを含むプロジェクトに対する dns.policies.delete
dns.policies.get ポリシーを含むプロジェクトに対する dns.policies.get
dns.policies.list ポリシーを含むプロジェクトに対する dns.policies.list
dns.policies.update ポリシーを含むプロジェクトに対する dns.policies.update

ポリシーが VPC ネットワークで更新されている場合は、各 VPC ネットワークを含むプロジェクトごとに dns.networks.bindPrivateDNSPolicy も設定する必要があります。

dns.projects.get プロジェクトに対する dns.projects.get
dns.resourceRecordSets.create レコードセットを含むプロジェクトに対する dns.resourceRecordSets.create
dns.resourceRecordSets.delete レコードセットを含むプロジェクトに対する dns.resourceRecordSets.delete
dns.resourceRecordSets.get レコードセットを含むプロジェクトに対する dns.resourceRecordSets.get
dns.resourceRecordSets.list マネージド ゾーンを含むプロジェクトに対する dns.resourceRecordSets.list
dns.resourceRecordSets.update レコードセットを含むプロジェクトに対する dns.resourceRecordSets.updatedns.changes.create
dns.responsePolicies.create レスポンス ポリシーを含むプロジェクトに対する dns.responsePolicies.create

また、リクエストの検証には dns.networks.bindDNSResponsePolicy も必要です。

GKE クラスタにアタッチされるレスポンス ポリシーを作成する場合は、dns.gkeClusters.bindDNSResponsePolicy を設定する必要があります。

dns.responsePolicies.delete レスポンス ポリシーを含むプロジェクトに対する dns.responsePolicies.delete
dns.responsePolicies.get レスポンス ポリシーを含むプロジェクトに対する dns.responsePolicies.get
dns.responsePolicies.list プロジェクトに対する dns.responsePolicies.list
dns.responsePolicies.update レスポンス ポリシーを含むプロジェクトに対する dns.responsePolicies.update

また、リクエストの検証には dns.networks.bindDNSResponsePolicy も必要です。

GKE クラスタにアタッチされるレスポンス ポリシーを作成する場合は、dns.gkeClusters.bindDNSResponsePolicy を設定する必要があります。

dns.responsePolicyRules.create レスポンス ポリシー ルールを含むプロジェクトに対する dns.responsePolicyRules.create
dns.responsePolicyRules.delete レスポンス ポリシー ルールを含むプロジェクトに対する dns.responsePolicyRules.delete
dns.responsePolicyRules.get レスポンス ポリシー ルールを含むプロジェクトに対する dns.responsePolicyRules.get
dns.responsePolicyRules.list レスポンス ポリシーを含むプロジェクトに対する dns.responsePolicyRules.list
dns.responsePolicyRules.update レスポンス ポリシー ルールを含むプロジェクトに対する dns.responsePolicyRules.update

ロール

次の表に、Cloud DNS API IAM のロールと、各ロールに含まれているすべての権限に対応するリストを示します。各権限は、それぞれ特定のリソースタイプを対象としています。

基本ロールを使用して DNS を変更することもできます。

Role Permissions

(roles/dns.admin)

Provides read-write access to all Cloud DNS resources.

Lowest-level resources where you can grant this role:

  • Managed zone

compute.networks.get

compute.networks.list

dns.changes.*

  • dns.changes.create
  • dns.changes.get
  • dns.changes.list

dns.dnsKeys.*

  • dns.dnsKeys.get
  • dns.dnsKeys.list

dns.gkeClusters.*

  • dns.gkeClusters.bindDNSResponsePolicy
  • dns.gkeClusters.bindPrivateDNSZone

dns.managedZoneOperations.*

  • dns.managedZoneOperations.get
  • dns.managedZoneOperations.list

dns.managedZones.create

dns.managedZones.delete

dns.managedZones.get

dns.managedZones.getIamPolicy

dns.managedZones.list

dns.managedZones.update

dns.networks.*

  • dns.networks.bindDNSResponsePolicy
  • dns.networks.bindPrivateDNSPolicy
  • dns.networks.bindPrivateDNSZone
  • dns.networks.targetWithPeeringZone
  • dns.networks.useHealthSignals

dns.policies.create

dns.policies.delete

dns.policies.get

dns.policies.getIamPolicy

dns.policies.list

dns.policies.update

dns.projects.get

dns.resourceRecordSets.*

  • dns.resourceRecordSets.create
  • dns.resourceRecordSets.delete
  • dns.resourceRecordSets.get
  • dns.resourceRecordSets.list
  • dns.resourceRecordSets.update

dns.responsePolicies.*

  • dns.responsePolicies.create
  • dns.responsePolicies.delete
  • dns.responsePolicies.get
  • dns.responsePolicies.list
  • dns.responsePolicies.update

dns.responsePolicyRules.*

  • dns.responsePolicyRules.create
  • dns.responsePolicyRules.delete
  • dns.responsePolicyRules.get
  • dns.responsePolicyRules.list
  • dns.responsePolicyRules.update

resourcemanager.projects.get

resourcemanager.projects.list

(roles/dns.peer)

Access to target networks with DNS peering zones

dns.networks.targetWithPeeringZone

(roles/dns.reader)

Provides read-only access to all Cloud DNS resources.

Lowest-level resources where you can grant this role:

  • Managed zone

compute.networks.get

dns.changes.get

dns.changes.list

dns.dnsKeys.*

  • dns.dnsKeys.get
  • dns.dnsKeys.list

dns.managedZoneOperations.*

  • dns.managedZoneOperations.get
  • dns.managedZoneOperations.list

dns.managedZones.get

dns.managedZones.list

dns.policies.get

dns.policies.list

dns.projects.get

dns.resourceRecordSets.get

dns.resourceRecordSets.list

dns.responsePolicies.get

dns.responsePolicies.list

dns.responsePolicyRules.get

dns.responsePolicyRules.list

resourcemanager.projects.get

resourcemanager.projects.list

アクセス制御を管理する

Google Cloud コンソールを使用して、トピックやプロジェクトのアクセス制御を管理できます。

プロジェクト レベルでアクセス制御を設定するには、次の手順を行います。

Console

  1. Google Cloud コンソールの [IAM] ページに移動します。

    [IAM] ページに移動

  2. 上部にあるプルダウン メニューからプロジェクトを選択します。

  3. [追加] をクリックします。

  4. [新しいプリンシパル] に、新しいプリンシパルのメールアドレスを入力します。

  5. リストからロールを選択します。

  6. [保存] をクリックします。

  7. 付与したロールにそのプリンシパルがリストされているかを確認します。

次のステップ