Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

概要

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 アドレスからでも配信できる状態にいつの間にかなってしまうことがあるので注意です。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away