0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS DevOps Agent を使ってみる (7) : DevOpsAgentの実行権限確認

0
Posted at

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. 構成図

image.png

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バケット内を調査するように指示する。

image.png

  • 権限不足で調査不可であることが確認できた。

4.4 IAMロールへの権限追加

  • DevOps Agent が使用しているデフォルトのIAMロール(DevOpsAgentRole-AgentSpace-xxxxxxxx)に、IAMポリシー(AmazonS3FullAccess)を追加する。

4.5 バケット内の読み取り指示(再)

  • DevOps Agentに対して AmazonS3FullAccess権限を付けた状態で、再度S3バケット内を調査するように指示する。

image.png
image.png

  • 権限を追加したことでS3バケット内の調査も可能となった。

4.6 バケット内への書き込み指示

  • DevOps Agentに対して AmazonS3FullAccess権限を付けた状態で、S3バケット内に書き込みを行うよう指示する。

image.png

  • IAMポリシー上は書き込み権限があるが、DevOpsAgentのガードレールにより、変更作業はできないことが確認できた。

5. 所感

  • 動作としては想定通りで、1) デフォルトは最小限の権限、2) 読み取りできる範囲の追加は可能、3) 変更は不可、ということが改めて確認できた。
  • 初期設定状態で使う場合において、予期せぬ変更操作が起きることの懸念はないと考えられるが、「IAMの権限」と「エージェント自体の機能許可」(ガードレール、エージェントアクション設定)の2段構えになっていることを意識し、必要に応じて改めて権限の確認を行うようにしたい。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?