1. はじめに
- 最近DevOps Agentの検証をしている。DevOps Agentは基本的には読み取り権限で動作し※、リソースの変更はできない仕様になっている。また、デフォルトではS3バケット内のオブジェクトは参照不可など、より制限のかかった状態になっている。
- DevOps Agentによる予期しない変更操作を避けるため、また、S3内の機密情報などへの不要なアクセスを避けるため、「DevOpsAgentが、どのような権限設定の時にどこまでアクセス可能か?」を実機確認する。
※2026/8に、「エージェントアクション」という、DevOpsAgentに対してリソースの変更権限を持たせる機能が追加されたが、本検証ではそれはOFFにしておく前提とする。
2. やったこと
- DevOps Agent のエージェントスペースを作成し、デフォルトで自動作成されるIAMロールをそのまま設定する。
- DevOps AgentにS3バケット内のオブジェクト読み取りを指示し、権限不足によりアクセス不可であることを確認する。
- DevOps AgentのIAMロールにS3FullAccess権限を追加する。
- DevOps Agentに再度S3バケット内のオブジェクト読み取りを指示し、今度はアクセス可能であることを確認する。
- DevOps AgentにS3バケット内へのオブジェクト書き込みを指示し、たとえIAM権限上は許可があっても、DevOpsAgentのガードレールにより操作不可であることを確認する。
3. 構成図
4. 手順
4.1 事前準備
-
DevOps Agent のエージェントスペースをデフォルト設定で作成する。
- デフォルトで自動作成されるIAMロールを使用する。
- 「エージェントアクション」機能は無効のままとする。
-
S3バケットをデフォルト暗号化(SSE-S3)で作成し、テスト用オブジェクト(diary.txt)のみを保存する。
diary.txt
8/30 晴れ 蝉取りに行った。
8/31 晴れ 残っていた算数の宿題を急いでやった。
4.2 DevOps Agent 初期権限の確認
- DevOps AgentのデフォルトのIAMロール(DevOpsAgentRole-AgentSpace-xxxxxxxx)にアタッチされているIAMポリシー(AIDevOpsAgentAccessPolicy)において、S3を例として権限を確認する。
- IAMポリシー(AIDevOpsAgentAccessPolicy)に付与されているS3関連の権限は以下。
AIDevOpsAgentAccessPolicyのS3関連部分.json
"s3:GetAccessGrant",
"s3:GetAccessGrantsInstance",
"s3:GetAccessGrantsLocation",
"s3:GetAccessPoint",
"s3:GetAccessPointConfigurationForObjectLambda",
"s3:GetAccessPointForObjectLambda",
"s3:GetAccessPointPolicy",
"s3:GetAccessPointPolicyForObjectLambda",
"s3:GetAccessPointPolicyStatusForObjectLambda",
"s3:GetBucketAbac",
"s3:GetBucketAcl",
"s3:GetBucketCORS",
"s3:GetBucketLocation",
"s3:GetBucketLogging",
"s3:GetBucketMetadataTableConfiguration",
"s3:GetBucketNotification",
"s3:GetBucketObjectLockConfiguration",
"s3:GetBucketOwnershipControls",
"s3:GetBucketPolicy",
"s3:GetBucketPublicAccessBlock",
"s3:GetBucketTagging",
"s3:GetBucketVersioning",
"s3:GetEncryptionConfiguration",
"s3:GetIntelligentTieringConfiguration",
"s3:GetInventoryConfiguration",
"s3:GetLifecycleConfiguration",
"s3:GetMultiRegionAccessPoint",
"s3:GetMultiRegionAccessPointPolicy",
"s3:GetMultiRegionAccessPointPolicyStatus",
"s3:GetReplicationConfiguration",
"s3:GetStorageLensConfiguration",
"s3:GetStorageLensConfigurationTagging",
"s3:GetStorageLensGroup",
"s3:ListAllMyBuckets",
- 比較対象として、例えばIAMポリシー(ReadOnlyAccess)に付与されている権限は以下。
ReadOnlyAccessのS3関連部分.json
"s3:DescribeJob",
"s3:Get*",
"s3:List*",
- このようにReadOnlyAccessと比較してもかなり権限が絞られており、例えば GetObject(オブジェクトの取得)などができず、ユーザのデータにはデフォルトではアクセスできない設計になっている。
4.3 バケット内の読み取り指示
- DevOps Agent に、S3バケット内を調査するように指示する。
- 権限不足で調査不可であることが確認できた。
4.4 IAMロールへの権限追加
- DevOps Agent が使用しているデフォルトのIAMロール(DevOpsAgentRole-AgentSpace-xxxxxxxx)に、IAMポリシー(AmazonS3FullAccess)を追加する。
4.5 バケット内の読み取り指示(再)
- DevOps Agentに対して AmazonS3FullAccess権限を付けた状態で、再度S3バケット内を調査するように指示する。
- 権限を追加したことでS3バケット内の調査も可能となった。
4.6 バケット内への書き込み指示
- DevOps Agentに対して AmazonS3FullAccess権限を付けた状態で、S3バケット内に書き込みを行うよう指示する。
- IAMポリシー上は書き込み権限があるが、DevOpsAgentのガードレールにより、変更作業はできないことが確認できた。
5. 所感
- 動作としては想定通りで、1) デフォルトは最小限の権限、2) 読み取りできる範囲の追加は可能、3) 変更は不可、ということが改めて確認できた。
- 初期設定状態で使う場合において、予期せぬ変更操作が起きることの懸念はないと考えられるが、「IAMの権限」と「エージェント自体の機能許可」(ガードレール、エージェントアクション設定)の2段構えになっていることを意識し、必要に応じて改めて権限の確認を行うようにしたい。




