IBM Cloud VPCに定義された権限

# はじめに
こちらの記事は下記Advent Calendar 2024で紹介しているIBM Cloud権限設定における `VPC Infrastructure Services` になります。

https://qiita.com/katahiro/items/274bec5ad4a9e2604dcf

# 共通権限は割愛
こちらの記事に記載しているように、プラットフォーム・アクセス、サービス・アクセスの権限でそれぞれどのようなものが共通して設定されているかを紹介させて頂きました。

https://qiita.com/katahiro/items/b5e367666fe984944d4b

こちらの記事では共通部分で出現する権限を除いた各サービス毎の権限設定を紹介します。

# VPCで指定可能な権限のアクセス範囲
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/651598/4ae988a4-648b-f8a4-bee3-5f435455874d.png)

- リソース・グループ
- リソース・タイプ
- Region

## リソース・グループの指定
これは指定されたリソース・グループに所属するVPCのみに対してアクセス権限を適用します。異なるリソース・グループのVPCに対しては別途権限を設定する必要があります。

## リソース・タイプの指定
VPC上で利用可能なサービスの一覧が表示されるので、その特定のサービスのみ権限を与えることが可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/651598/830de368-cdd9-44c8-ae1e-8a87226f2046.png)

## Regionの指定
これは jp-tok といったVPCの存在するRegionを指定することで、その指定されたRegionのみの権限を与えることが可能になります。

# VPCに設定された権限
## プラットフォーム・アクセスの権限
※Admin : Administrator, KM : Key Manager, SCR : Service Configuration Reader

### VPC自体に関する権限
|権限|Viewer|Operator|Editor|Admin|KM|SCR|
|:---|:---:|:---:|:---:|:---:|:---:|:---:|
|is.vpc.vpc.read|〇|〇|〇|〇||
|is.vpc.vpc.list|〇|〇|〇|〇||
|is.vpc.vpc.operate||〇|〇|〇||
|is.vpc.vpc.create|||〇|〇||
|is.vpc.vpc.update|||〇|〇||
|is.vpc.vpc.delete|||〇|〇||
|is.metadata.metadata.read|〇|〇|〇|〇||
|is.metadata.dashboard.view||〇|〇|〇||

基本的に作成や削除といった行為はEditor以上が必要になります。

### Subnetに関する権限
|権限|Viewer|Operator|Editor|Admin|KM|SCR|
|:---|:---:|:---:|:---:|:---:|:---:|:---:|
|is.subnet.subnet.read|〇|〇|〇|〇||
|is.subnet.subnet.list|〇|〇|〇|〇||
|is.subnet.subnet.operate||〇|〇|〇||
|is.subnet.subnet.create|||〇|〇||
|is.subnet.subnet.update|||〇|〇||
|is.subnet.subnet.delete|||〇|〇||

SubnetのOperator権限で名称は変えたりできませんが、Subnet ACLを別のルールに変更するというのは可能でした。

### Subnet Access Control List(ACL)に関する権限
|権限|Viewer|Operator|Editor|Admin|KM|SCR|
|:---|:---:|:---:|:---:|:---:|:---:|:---:|
|is.network-acl.network-acl.read|〇|〇|〇|〇||
|is.network-acl.network-acl.list|〇|〇|〇|〇||
|is.network-acl.network-acl.operate||〇|〇|〇||
|is.network-acl.network-acl.create|||〇|〇||
|is.network-acl.network-acl.update|||〇|〇||
|is.network-acl.network-acl.delete|||〇|〇||

### Security Groupに関する権限
|権限|Viewer|Operator|Editor|Admin|KM|SCR|
|:---|:---:|:---:|:---:|:---:|:---:|:---:|
|is.security-group.security-group.read|〇|〇|〇|〇||
|is.security-group.security-group.operate||〇|〇|〇||
|is.security-group.security-group.create|||〇|〇||
|is.security-group.security-group.update|||〇|〇||
|is.security-group.security-group.delete|||〇|〇||

### Public Gatewayに関する権限
|権限|Viewer|Operator|Editor|Admin|KM|SCR|
|:---|:---:|:---:|:---:|:---:|:---:|:---:|
|is.public-gateway.public-gateway.read|〇|〇|〇|〇||
|is.public-gateway.public-gateway.list|〇|〇|〇|〇||
|is.public-gateway.public-gateway.operate||〇|〇|〇||
|is.public-gateway.public-gateway.create|||〇|〇||
|is.public-gateway.public-gateway.update|||〇|〇||
|is.public-gateway.public-gateway.delete|||〇|〇||

### Virtual Network Interfaceに関する権限
|権限|Viewer|Operator|Editor|Admin|KM|SCR|
|:---|:---:|:---:|:---:|:---:|:---:|:---:|
|is.virtual-network-interface.virtual-network-interface.read|〇|〇|〇|〇||
|is.virtual-network-interface.virtual-network-interface.list|〇|〇|〇|〇||
|is.virtual-network-interface.virtual-network-interface.operate||〇|〇|〇||
|is.virtual-network-interface.virtual-network-interface.create|||〇|〇||
|is.virtual-network-interface.virtual-network-interface.update|||〇|〇||
|is.virtual-network-interface.virtual-network-interface.delete|||〇|〇||
|is.virtual-network-interface.virtual-network-interface.manage-protocol-state-filtering-mode|||〇|〇||
|is.virtual-network-interface.virtual-network-interface.manage-infrastructure-nat||||〇||
|is.virtual-network-interface.virtual-network-interface.manage-ip-spoofing||||〇||

IPスプーフィングの設定やVNIでのNAT設定はAdministratorでのみ許可されています。

### VSI(仮想マシン)に関する権限
|権限|Viewer|Operator|Editor|Admin|KM|SCR|
|:---|:---:|:---:|:---:|:---:|:---:|:---:|
|is.instance.instance.config.read||||||〇
|is.instance.instance.read|〇|〇|〇|〇||
|is.instance.instance.list|〇|〇|〇|〇||
|is.instance.instance.operate||〇|〇|〇||
|is.instance.instance.create|||〇|〇||
|is.instance.instance.update|||〇|〇||
|is.instance.instance.delete|||〇|〇||

Operator権限でサーバの停止、開始といった操作は可能です。

### インスタンステンプレートに関する権限
|権限|Viewer|Operator|Editor|Admin|KM|SCR|
|:---|:---:|:---:|:---:|:---:|:---:|:---:|
|is.instance.instance-template.read|〇|〇|〇|〇||
|is.instance.instance-template.create|||〇|〇||
|is.instance.instance-template.update|||〇|〇||
|is.instance.instance-template.delete|||〇|〇||

### Floating IP(浮動IP)に関する権限
|権限|Viewer|Operator|Editor|Admin|KM|SCR|
|:---|:---:|:---:|:---:|:---:|:---:|:---:|
|is.floating-ip.floating-ip.read|〇|〇|〇|〇||
|is.floating-ip.floating-ip.list|〇|〇|〇|〇||
|is.floating-ip.floating-ip.operate||〇|〇|〇||
|is.floating-ip.floating-ip.create|||〇|〇||
|is.floating-ip.floating-ip.update|||〇|〇||
|is.floating-ip.floating-ip.delete|||〇|〇||

### ベアメタル(物理)サーバに関する権限
|権限|Viewer|Operator|Editor|Admin|KM|SCR|
|:---|:---:|:---:|:---:|:---:|:---:|:---:|
|is.bare-metal-server.bare-metal-server.read|〇|〇|〇|〇||
|is.bare-metal-server.bare-metal-server.list|〇|〇|〇|〇||
|is.bare-metal-server.dashboard.view||〇|〇|〇||
|is.bare-metal-server.bare-metal-server.operate||〇|〇|〇||
|is.bare-metal-server.bare-metal-server-firmware.update||〇|〇|〇||
|is.bare-metal-server.bare-metal-server.create|||〇|〇||
|is.bare-metal-server.bare-metal-server.update|||〇|〇||
|is.bare-metal-server.initialization.update|||〇|〇||
|is.bare-metal-server.bare-metal-server.delete|||〇|〇||

ベアメタルサーバのダッシュボードを見る権限はOperator以上となっているのがちょっと不思議です。

### Dedicated Hostに関する権限
|権限|Viewer|Operator|Editor|Admin|KM|SCR|
|:---|:---:|:---:|:---:|:---:|:---:|:---:|
|is.dedicated-host.dedicated-host.read|〇|〇|〇|〇||
|is.dedicated-host.dashboard.view|〇|〇|〇|〇||
|is.dedicated-host.dedicated-host.list|〇|〇|〇|〇||
|is.dedicated-host.dedicated-host.operate||〇|〇|〇||
|is.dedicated-host.dedicated-host.provision||〇|〇|〇||
|is.dedicated-host.dedicated-host.create|||〇|〇||
|is.dedicated-host.dedicated-host.update|||〇|〇||
|is.dedicated-host.dedicated-host.delete|||〇|〇||
|is.dedicated-host.dedicated-host-group.read|〇|〇|〇|〇||
|is.dedicated-host.dedicated-host-group.list|〇|〇|〇|〇||
|is.dedicated-host.dedicated-host-group.operate||〇|〇|〇||
|is.dedicated-host.dedicated-host-group.provision||〇|〇|〇||
|is.dedicated-host.dedicated-host-group.create|||〇|〇||
|is.dedicated-host.dedicated-host-group.update|||〇|〇||
|is.dedicated-host.dedicated-host-group.append|||〇|〇||
|is.dedicated-host.dedicated-host-group.delete|||〇|〇||

こちらDedicated Hostのダッシュボード参照権限はViewerが設定されていれば良いです。ベアメタルとの差がよくわかりません。

### Reservationに関する権限
|権限|Viewer|Operator|Editor|Admin|KM|SCR|
|:---|:---:|:---:|:---:|:---:|:---:|:---:|
|is.reservation.reservation.read|〇|〇|〇|〇||
|is.reservation.reservation.list|〇|〇|〇|〇||
|is.reservation.reservation.operate||〇|〇|〇||
|is.reservation.reservation.create|||〇|〇||
|is.reservation.reservation.update|||〇|〇||
|is.reservation.reservation.delete|||〇|〇||
|is.reservation.reservation.activate|||〇|〇||
|is.reservation.reservation.expire|||〇|〇||

予約済のリソースはViewer以上の権限があれば見れます。単純に作成、削除だけでなく、Activate(有効化)、Expire(失効)がAdministrator権限にあるのが他と違いますね。

### インスタンスグループに関する権限
|権限|Viewer|Operator|Editor|Admin|KM|SCR|
|:---|:---:|:---:|:---:|:---:|:---:|:---:|
|is.instance-group.instance-group.config.read||||||〇
|is.instance-group.instance-group.read|〇|〇|〇|〇||〇
|is.instance-group.instance-group.list|〇|〇|〇|〇||
|is.instance-group.instance-group.create|||〇|〇||
|is.instance-group.instance-group.update|||〇|〇||
|is.instance-group.instance-group.delete|||〇|〇||

インスタンスグループは特定のマシンをイメージテンプレートを利用してリクエスト数に応じて自動でマシン数を増やして負荷分散したりする機能になります。

### Placement Groupに関する権限
|権限|Viewer|Operator|Editor|Admin|KM|SCR|
|:---|:---:|:---:|:---:|:---:|:---:|:---:|
|is.placement-group.placement-group.read|〇|〇|〇|〇||
|is.placement-group.placement-group.list|〇|〇|〇|〇||
|is.placement-group.dashboard.view||〇|〇|〇||
|is.placement-group.placement-group.operate||〇|〇|〇||
|is.placement-group.placement-group.create|||〇|〇||
|is.placement-group.placement-group.update|||〇|〇||
|is.placement-group.placement-group.delete|||〇|〇||

Placement GroupはVSIのどのサーバ同士が同じ筐体で稼働するべきか、といった条件を作る権限になります。
例えばAppとDBサーバは同じ筐体で動かすように設定する、といったものですね。
こちらのダッシュボードはOperator以上の権限が無いと見れません。

### イメージテンプレートに関する権限
|権限|Viewer|Operator|Editor|Admin|KM|SCR|
|:---|:---:|:---:|:---:|:---:|:---:|:---:|
|is.image.image.config.read||||||〇
|is.image.image.read|〇|〇|〇|〇||
|is.image.image.list|〇|〇|〇|〇||
|is.image.image.operate||〇|〇|〇||
|is.image.image.provision||〇|〇|〇||
|is.image.image.create|||〇|〇||
|is.image.image.deprecate|||〇|〇||
|is.image.image.export|||〇|〇||
|is.image.image.update|||〇|〇||
|is.image.image.obsolete|||〇|〇||
|is.image.image.delete|||〇|〇||

### Block Storageに関する権限
|権限|Viewer|Operator|Editor|Admin|KM|SCR|
|:---|:---:|:---:|:---:|:---:|:---:|:---:|
|is.volume.profile.view|〇|〇|〇|〇||
|is.volume.volume.config.read||||||〇
|is.volume.volume.read|〇|〇|〇|〇||
|is.volume.volume.list|〇|〇|〇|〇||
|is.volume.volume.operate||〇|〇|〇||
|is.volume.volume.create|||〇|〇||
|is.volume.volume.update|||〇|〇||
|is.volume.volume.delete|||〇|〇||

### File Storageに関する権限
|権限|Viewer|Operator|Editor|Admin|KM|SCR|
|:---|:---:|:---:|:---:|:---:|:---:|:---:|
|is.share.share.config.read||||||〇
|is.share.share.read|〇|〇|〇|〇||
|is.share.share.list|〇|〇|〇|〇||
|is.share.share.operate||〇|〇|〇||
|is.share.dashboard.view||〇|〇|〇||
|is.share.share.create|||〇|〇||
|is.share.share.update|||〇|〇||
|is.share.share.delete|||〇|〇||
|is.share.accessor-binding.read|〇|〇|〇|〇||
|is.share.accessor-binding.list|〇|〇|〇|〇||
|is.share.accessor-binding.create||||〇||
|is.share.accessor-binding.delete||||〇||

File Storageはダッシュボードの権限があり、Operator以上と指定されています。
Block Storageと異なり、同一AZにある複数のVSIから共有可能なため、その紐づけのための権限が設定されています。

### Snapshotに関する権限
|権限|Viewer|Operator|Editor|Admin|KM|SCR|
|:---|:---:|:---:|:---:|:---:|:---:|:---:|
|is.snapshot.clone.read|〇|〇|〇|〇||
|is.snapshot.snapshot.config.read||||||〇
|is.snapshot.snapshot.read|〇|〇|〇|〇||
|is.snapshot.snapshot.list|〇|〇|〇|〇||
|is.snapshot.snapshot.operate||〇|〇|〇||
|is.snapshot.snapshot.restore||〇|〇|〇||
|is.snapshot.snapshot.create|||〇|〇||
|is.snapshot.snapshot.update|||〇|〇||
|is.snapshot.snapshot.delete|||〇|〇||
|is.snapshot.snapshot-clone.create|||〇|〇||
|is.snapshot.snapshot-clone.delete|||〇|〇||
|is.snapshot-consistency-group.snapshot-consistency-group.read|〇|〇|〇|〇||
|is.snapshot-consistency-group.snapshot-consistency-group.list|〇|〇|〇|〇||
|is.snapshot-consistency-group.snapshot-consistency-group.create|||〇|〇||
|is.snapshot-consistency-group.snapshot-consistency-group.update|||〇|〇||
|is.snapshot-consistency-group.snapshot-consistency-group.delete|||〇|〇||

Snapshotの作成はEditor以上の権限となりますが、リストアの実行はOperatorの権限で可能になります。
必要最低限と言った時にリストア権限を付与するかどうかが分かれ目な気がしますね。

### Backupポリシーに関する権限
|権限|Viewer|Operator|Editor|Admin|KM|SCR|
|:---|:---:|:---:|:---:|:---:|:---:|:---:|
|is.backup-policy.backup-policy.read|〇|〇|〇|〇||
|is.backup-policy.backup-policy.list|〇|〇|〇|〇||
|is.backup-policy.dashboard.view||〇|〇|〇||
|is.backup-policy.backup-policy.create|||〇|〇||
|is.backup-policy.backup-policy.update|||〇|〇||
|is.backup-policy.backup-policy.delete|||〇|〇||

自動で定期的にSnapshotを取得するためのBackupポリシーの作成権限は基本的にEditor以上の権限で行われます。
ダッシュボードの権限のみ割り振られたOperatorの権限は若干意味をなしていないような…見ることしかできないOperate権限とは…
(Viewerにダッシュボード参照権限を与えるのはダメだったのか…)

### Virtual Private Endpoint(VPE)に関する権限
|権限|Viewer|Operator|Editor|Admin|KM|SCR|
|:---|:---:|:---:|:---:|:---:|:---:|:---:|
|is.endpoint-gateway.endpoint-gateway.read|〇|〇|〇|〇||
|is.endpoint-gateway.endpoint-gateway.list|〇|〇|〇|〇||
|is.endpoint-gateway.endpoint-gateway.operate||〇|〇|〇||
|is.endpoint-gateway.endpoint-gateway.create|||〇|〇||
|is.endpoint-gateway.endpoint-gateway.update|||〇|〇||
|is.endpoint-gateway.endpoint-gateway.delete|||〇|〇||

### Private Pathに関する権限
|権限|Viewer|Operator|Editor|Admin|KM|SCR|
|:---|:---:|:---:|:---:|:---:|:---:|:---:|
|is.private-path-service-gateway.account-policy.read|〇|〇|〇|〇||
|is.private-path-service-gateway.account-policy.list|〇|〇|〇|〇||
|is.private-path-service-gateway.account-policy.manage||〇|〇|〇||
|is.private-path-service-gateway.endpoint-gateway-binding.read|〇|〇|〇|〇||
|is.private-path-service-gateway.endpoint-gateway-binding.list|〇|〇|〇|〇||
|is.private-path-service-gateway.endpoint-gateway-binding.manage||〇|〇|〇||
|is.private-path-service-gateway.private-path-service-gateway.read|〇|〇|〇|〇||
|is.private-path-service-gateway.private-path-service-gateway.list|〇|〇|〇|〇||
|is.private-path-service-gateway.private-path-service-gateway.operate||〇|〇|〇||
|is.private-path-service-gateway.private-path-service-gateway.create|||〇|〇||
|is.private-path-service-gateway.private-path-service-gateway.update|||〇|〇||
|is.private-path-service-gateway.private-path-service-gateway.delete|||〇|〇||
|is.private-path-service-gateway.private-path-service-gateway.publish|||〇|〇||
|is.private-path-service-gateway.private-path-service-gateway.unpublish|||〇|〇||

最近GAしたPrivate Pathの権限ですが、もちろん新規作成はEditor以上の権限が必要ですが、作成されたPrivate Pathのポリシーの変更やバインディングの変更といったところはOperator権限でも可能になっています。

### Load Balancerに関する権限
|権限|Viewer|Operator|Editor|Admin|KM|SCR|
|:---|:---:|:---:|:---:|:---:|:---:|:---:|
|is.load-balancer.config.read||||||〇
|is.load-balancer.load-balancer.view|〇|〇|〇|〇||
|is.load-balancer.load-balancer.operate||〇|〇|〇||
|is.load-balancer.load-balancer.manage|||〇|〇||

少し不思議ですが、Load Balancerにはcreateの権限がなく、manageでどうも代用しているみたいです。

### DNSに関する権限
|権限|Viewer|Operator|Editor|Admin|KM|SCR|
|:---|:---:|:---:|:---:|:---:|:---:|:---:|
|is.vpc.dns-resolution-binding.read|〇|〇|〇|〇||
|is.vpc.dns-resolution-binding.list|〇|〇|〇|〇||
|is.vpc.dns-resolution-binding.create|||〇|〇||
|is.vpc.dns-resolution-binding.update|||〇|〇||
|is.vpc.dns-resolution-binding.delete|||〇|〇||

DNSには特にOperator特有の権限はなく、Editor以上の権限で作成可能にするか、といったところですね。

### ルーティングに関する権限
|権限|Viewer|Operator|Editor|Admin|KM|SCR|
|:---|:---:|:---:|:---:|:---:|:---:|:---:|
|is.vpc.routing-table.read|〇|〇|〇|〇||
|is.vpc.routing-table.list|〇|〇|〇|〇||
|is.vpc.routing-table.operate||〇|〇|〇||
|is.vpc.routing-table.create|||〇|〇||
|is.vpc.routing-table.update|||〇|〇||
|is.vpc.routing-table.advertise|||〇|〇||
|is.vpc.routing-table.delete|||〇|〇||

### VPN Service(Site-to-Site)に関する権限
|権限|Viewer|Operator|Editor|Admin|KM|SCR|
|:---|:---:|:---:|:---:|:---:|:---:|:---:|
|is.vpn.config.read||||||〇
|is.vpn.vpn.read|〇|〇|〇|〇||
|is.vpn.vpn.list|〇|〇|〇|〇||
|is.vpn.dashboard.view|〇|〇|〇|〇||
|is.vpn.vpn.create|||〇|〇||
|is.vpn.vpn.update|||〇|〇||
|is.vpn.vpn.delete|||〇|〇||

こちらはViewerでダッシュボードの参照が可能です。

### VPN Server(Cient-to-Site)に関する権限
|権限|Viewer|Operator|Editor|Admin|KM|SCR|
|:---|:---:|:---:|:---:|:---:|:---:|:---:|
|is.vpn-server.config.read||||||〇
|is.vpn-server.dashboard.view|〇|〇|〇|〇||
|is.vpn-server.vpn-server.read|〇|〇|〇|〇||
|is.vpn-server.vpn-server.operate||〇|〇|〇||
|is.vpn-server.vpn-server.create|||〇|〇||
|is.vpn-server.vpn-server.update|||〇|〇||
|is.vpn-server.vpn-server.delete|||〇|〇||

こちらはOperator以上の権限でダッシュボードの参照が可能です。なぜ異なる設定にしているのかよくわかりません。

### Cluster Networkに関する権限
|権限|Viewer|Operator|Editor|Admin|KM|SCR|
|:---|:---:|:---:|:---:|:---:|:---:|:---:|
|is.cluster-network.cluster-network.read|〇|〇|〇|〇||
|is.cluster-network.cluster-network.list|〇|〇|〇|〇||
|is.cluster-network.cluster-network.create|||〇|〇||
|is.cluster-network.cluster-network.update|||〇|〇||
|is.cluster-network.cluster-network.delete|||〇|〇||
|is.cluster-network.interface.read|〇|〇|〇|〇||
|is.cluster-network.interface.create|||〇|〇||
|is.cluster-network.interface.list|〇|〇|〇|〇||
|is.cluster-network.interface.operate||〇|〇|〇||
|is.cluster-network.interface.update|||〇|〇||
|is.cluster-network.interface.delete|||〇|〇||
|is.cluster-network.profile.read|〇|〇|〇|〇||
|is.cluster-network.profile.list|〇|〇|〇|〇||
|is.cluster-network.subnet.read|〇|〇|〇|〇||
|is.cluster-network.subnet.list|〇|〇|〇|〇||
|is.cluster-network.subnet.operate||〇|〇|〇||
|is.cluster-network.subnet.create|||〇|〇||
|is.cluster-network.subnet.update|||〇|〇||
|is.cluster-network.subnet.delete|||〇|〇||
|is.cluster-network.subnet-reserved-ip.read|〇|〇|〇|〇||
|is.cluster-network.subnet-reserved-ip.list|〇|〇|〇|〇||
|is.cluster-network.subnet-reserved-ip.create|||〇|〇||
|is.cluster-network.subnet-reserved-ip.update|||〇|〇||
|is.cluster-network.subnet-reserved-ip.delete|||〇|〇||

クラスターネットワークは現在H100のプロファイルを利用しているVSIのみ利用可能なもので、こちらの権限について検討される方は滅多にいないかもしれません。

HPCにご興味がある方は下記のドキュメントを参考にクラスターネットワークの利点を知って頂ければと思います。

https://cloud.ibm.com/docs/vpc?topic=vpc-about-cluster-network&locale=ja

### Flow Logに関する権限
|権限|Viewer|Operator|Editor|Admin|KM|SCR|
|:---|:---:|:---:|:---:|:---:|:---:|:---:|
|is.flow-log-collector.flow-log-collector.read|〇|〇|〇|〇||
|is.flow-log-collector.flow-log-collector.list|〇|〇|〇|〇||
|is.flow-log-collector.flow-log-collector.operate||〇|〇|〇||
|is.flow-log-collector.flow-log-collector.create|||〇|〇||
|is.flow-log-collector.flow-log-collector.update|||〇|〇||
|is.flow-log-collector.flow-log-collector.delete|||〇|〇||

### 鍵に関する権限
|権限|Viewer|Operator|Editor|Admin|KM|SCR|
|:---|:---:|:---:|:---:|:---:|:---:|:---:|
|is.key.key.read|〇|〇|〇|〇||
|is.key.key.list|〇|〇|〇|〇||
|is.key.key.operate||〇|〇|〇||
|is.key.key.create|||〇|〇||
|is.key.key.update|||〇|〇||
|is.key.key.delete|||〇|〇||
|is.key.userdata.read|〇|〇|〇|〇||
|is.key.userdata.list||〇|〇|〇||
|is.key.userdata.create|||〇|〇||
|is.key.userdata.delete|||〇|〇||
|is.key.artifactattachment.read|〇|〇|〇|〇||
|is.key.artifactattachment.create|||〇|〇||
|is.key.artifactattachment.update|||〇|〇||
|is.key.artifactattachment.delete|||〇|〇||

これで全部になります。なかなかおなか一杯ですね。。。

## サービス・アクセスの権限
VPCのサービス・アクセスは権限が多いのではなく役割が多いので、ベースとなるReader,Writer,Managerはマトリクスで、それ以外は個別に紹介します。

### 基本の役割が持つ権限
|権限|Reader|Writer|Manager|
|:---|:---:|:---:|:---:|
|is.metadata.dashboard.view|〇|〇|〇|
|is.image.image.deprecate||〇|〇|
|is.image.image.obsolete||〇|〇|

権限で指定されているのがこれだけなので、サービス・アクセスのReader,Writer,Managerはあまり指定しないかもしれません。

### Bare Metal Console Adminの権限
- is.bare-metal-server.bare-metal-server.console

ベアメタルサーバのコンソールにアクセスする権限を別途持つことが可能です。

### Bare Metal Advanced Network Operatorの権限
- is.bare-metal-server.bare-metal-server.infrastructure-nat
- is.bare-metal-server.bare-metal-server.ip-spoofing

Virtual Network Interfaceの権限でも触れたベアメタルサーバのネットワークに対するNAT、IPスプーフィングの権限のみを別途適用することが可能です。

### Console Administratorの権限
- is.instance.instance.console

結構重要な権限でVPCのVSIを利用している場合、コンソールアクセスが必要なケースがあります。
その際にIBM Cloudのメニューからコンソールアクセスが可能なので、その際に必要な権限になります。
プラットフォーム・アクセスのAdministrator権限にこの権限が含まれていないので、別途付与が必要になります。

### IP Spoofing Operatorの権限
- is.instance.instance.ip-spoofing

VSIのIPスプーフィングの設定有無を切り替えることが可能な権限です。

### Share Brokerの権限
- is.share.accessor-binding.create
- is.share.accessor-binding.delete

File Storageのアクセス可能なVSIの指定、削除のみ実行可能な権限です。

### Share Remote Account Accessorの権限
- is.share.share.allow-remote-account-access

別アカウントからのFile Storageへのアクセス許可をするために必要な権限です。

### Snapshot Remote Account Restorerの権限
- is.snapshot.snapshot.allow-remote-account-restore

別アカウントのSnapshotにアクセスする権限です。

### Restore Volume From Remote Account Snapshot
- is.volume.volume.allow-remote-account-snapshot-restore

別アカウントのSnapshotからBlock Storageへのリストアを許可する権限です。

### DNS Binding Connectorの権限
- is.vpc.vpc.read
- is.vpc.dns-resolution-binding.connect
- is.vpc.dns-resolution-binding.disconnect

DNSの設定でresolutionの接続、切り離しのみを実施する権限です。

### Users of the VPN server need this role to connect to the VPN serverの権限
- is.vpn-server.vpn-server.connect

割と重要な権限で、Client To Site VPNのサービスで、VPNの接続のみ許可する権限です。
VPNにアクセスする人が限定的で、対象者をIBM Cloudアカウントに招待する場合、この権限を付与しておけばVPN越しに必要なサーバにだけアクセスさせる、といったことが可能になります。


# さいごに
VPCで定義可能なプラットフォーム・アクセスの権限は多いですね。
特に、VSIの作成、ネットワークの設定、VPNといったセキュリティ関係の設定等多くのサービスを含むので、不用意にEditor権限を付与すると何でもできる権限になってしまいます。
適切な権限管理を行う場合は、権限範囲の指定でリソースタイプを選び、VPCの中の必要なサービスにのみ権限を付与するのが望ましいように思います。