1
1

More than 3 years have passed since last update.

OSSに初めてissueを立ててみた

Last updated at Posted at 2020-06-06

はじめに

大学からコンピューターサイエンスを専攻し、今年でエンジニア歴6年目となるにも関わらず、
私は今までOSSにコントリビュートした経験が無い。。

エンジニアとしてコントリビュート経験が無いのはまずい気がするため、まずはissueを立てることからやってみた。

OSSのコントリビュートはそこまでハードルが高くないらしい

OSSのコントリビュートと聞くと、つよつよエンジニアしかできないんでしょ。と思っていたがそうでもないらしい。
issueを立てたり、ドキュメントのタイピングミスを修正するだけでもコントリビュータになれるとのこと。
意外ととっつきやすいOSS開発参加方法まとめ
超絶簡単OSSコントリビュート術

私でもこれくらいだったら出来そうな気がしてきたぞ!!

issueを見つける

issueを立てるためには、当然ですがissueを見つける必要があります。
ちょうどAWS CLIでバグを見つけたところだったので、こちらの内容をissueとして立てようと思います。

rds-db:connectのCondition制約にaws:CurrentTimeコンテキストキーが使えない

前提知識

IAM認証によるRDS接続

rds-db:connectはIAM認証によるRDS接続で必要な権限です。
IAM認証を行うことで、RDS接続時のパスワードを固定化する必要がなくなり、よりセキュアになります。

IAM認証によるRDS接続の詳細な説明はクラスメソッドさんのブログが大変参考になります。
IAM認証でRDS PostgreSQLに接続してみた

グローバル条件コンテキストキー

AWS CLIなりでAWSにリクエストを行うと、様々な情報をコンテキストとして付与します。
付与されたキー値とポリシーで指定した値を比較して、アクセスの許可拒否を判定できます。

AWS グローバル条件コンテキストキー

やりたかっとこと

IAM認証によるRDS接続ができる時間帯を制限したかった。
そのため、こんなIAMポリシーを作りました。

IAM認証によるRDS接続できる時間帯を制限したポリシー
{
   "Version": "2012-10-17",
   "Statement": [
      {
         "Effect": "Allow",
         "Action": [
             "rds-db:connect"
         ],
         "Resource": "*",
         "Condition": {
             "DateGreaterThan": {
                 "aws:CurrentTime": "2020-03-27T00:00:00Z"
             },
             "DateLessThan": {
                 "aws:CurrentTime": "2020-03-27T23:59:59Z"
             }
         }
      }
   ]
}

こうすることでDateGreaterThanとDateLessThanの時間範囲だけ接続できることを期待しました。
でも、このポリシーだと時間範囲内だろうが範囲外だろうが接続できませんでした。

$ RDSHOST=【DBクラスターID】.cluster-XXXXXXXX.ap-northeast-1.rds.amazonaws.com
$ export PGPASSWORD="$( aws rds generate-db-auth-token --hostname $RDSHOST --port 5432 --username jane_doe )"
$ psql "host=$RDSHOST dbname=postgres user=jane_doe"
psql: FATAL:  PAM authentication failed for user "jane_doe"
FATAL:  pg_hba.conf rejects connection for host "10.0.0.202", user "jane_doe", database "postgres", SSL off

サポートに問い合わせた所、

rds-db:connectに関するリクエストをする時はコンテキストキーにaws:CurrentTimeが含まれないため、
代わりにaws:TokenIssueTimeで代用してほしい

とのこと。
ご指摘通りaws:TokenIssueTimeを使ったら時間範囲内の時間帯のみ接続することができました。

ただし、公式ドキュメントにはaws:CurrentTimeコンテキストキーがリクエストに乗る条件としてこんな記載でした。

このキーは常にリクエストコンテキストに含まれます。

つまり、例外無くaws:CurrentTimeコンテキストキーはリクエストに乗るべきにも関わらず、IAM認証でのRDS接続時は含まれていないということです。

説明が長くなったがこれをissueとして立てよう!

issueを立てる

DeepL翻訳をフル活用してissueを立てました!
IAM database authentication with a global conditional context key:aws:CurrentTime can not allow only within Specific dates

対応報告

一旦issueを立てるところまで行いました。issueに対して何かアクションがあれば追記していきたいと思います。今後の目標はプルリク出して自分で修正できるようになること!

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