1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Github の Service に Amazon SQS を設定するときに IAM 周りでハマった

Posted at

概要

Github の Webhooks & services のところで Amazon SQS を設定する際に最小限の権限だけ持った IAM の Aws access key を使いたいと思って設定したのですが全然うまく行かなかったので解決までの経緯を書きます。

タイトルの Github の Service と言うのはこの画面で設定するやつです。

image

TL; DR

IAM のポリシーに sqs:GetQueueUrlsqs:SendMessage のアクションの許可が必要。 ドキュメントには sqs:SendMessageだけで良いって書いてあるけどね :angry:

事の起こり

リポジトリに Amazon SQS の設定しようとして Install Notes(下記画像) には SendMessage の権限が必要とあったのでその権限だけの IAM を作って設定しました。

しかしテストしてみると SQS が配信されませんでした。 試しにここで設定した IAM ユーザーを使って自分のマシンから aws コマンドを買って SQS のメッセージを発行してみるとうまく動きました。

何がおかしいかよくわからないので調査することにしました。

image

まずはすべてアクションを許可してみる

試しに IAM の許可されたアクションを sqs:* にしました。

この状態で Github からテストするとちゃんとメッセージが配信されました。

そこで全てのアクションを箇条書きにして1個ずつ消していくことにしました。

SQS のアクションを全て並べると以下のようになります(多い...)。

sqs:AddPermission
sqs:ChangeMessageVisibility
sqs:ChangeMessageVisibilityBatch
sqs:CreateQueue
sqs:DeleteMessage
sqs:DeleteMessageBatch
sqs:DeleteQueue
sqs:GetQueueAttributes
sqs:GetQueueUrl
sqs:ListDeadLetterSourceQueues
sqs:ListQueues
sqs:PurgeQueue
sqs:ReceiveMessage
sqs:RemovePermission
sqs:SendMessage
sqs:SendMessageBatch
sqs:SetQueueAttributes

最終的に残ったもの

1個消してはテストして、また1個消してはテストするというのを繰り返し続けました(Delete 系のやつや Permission 系のは流石に関係ないと思ってざっくり消したけど)。

その結果最後に残ったのは以下の2つでした。 GetQueueUrl を消すとまた動かなくなるのでなんか使ってるっぽいです。

  • sqs:GetQueueUrl
  • sqs:SendMessage

まとめ

Github に Amazon SQS を設定する際は以下の2つのアクションの許可が必要です。

  • sqs:GetQueueUrl
  • sqs:SendMessage

また、記事中では触れていませんが更に安全にするために Github の IP アドレス以外からはメッセージが配信できないようにすると良いと思います。

NotIpAddress aws:SourceIp: "192.30.252.0/22" は拒否みたいな感じです。

Github の IP アドレスだけ許可する という構成にすると他のポリシーで上書きされてどの IP アドレスからでも配信できる状態にいつの間にかなってしまうことがあるので注意です。

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?