クラウドインテグレーション2部技術3課の山下です。
今回は、AWS Secrets Managerでシークレット情報の自動ローテーションを設定する際の、 ローテーションのスケジュール設定について書きたいと思います。
- (背景)毎月1日のAM3時(日本時間)にローテーションさせようとして少し詰まった
- (結論)スケジュール式でcron(0 18 L * ? *)と記載したらできた
- ローテーションのスケジュールの指定方法は2種類ある
- スケジュール式ビルダーについて
- スケジュール式について
- (補足)スケジュール式ビルダーでも、裏でcron式が作成される
- おわりに
(背景)毎月1日のAM3時(日本時間)にローテーションさせようとして少し詰まった
先日、AWS Secrets Managerでシークレット情報の自動ローテーションを設定する際に、 毎月1日のAM3時(日本時間)にローテーションさせようとしたところ、 少し設定に詰まったため、備忘のために設定方法を残そうと思いました。
(結論)スケジュール式でcron(0 18 L * ? *)と記載したらできた
いきなり結論を書いてしまいますが、スケジュール式を使用し、以下の通り記載すれば、 毎月1日のAM3時(日本時間)にローテーションさせることが可能です。
cron(0 18 L * ? *)
以降では、Secrets Managerの自動ローテーション設定について、もう少し細かく見ていきます。
ローテーションのスケジュールの指定方法は2種類ある
ローテーションスケジュールの設定方法には、以下の2種類があります。
方式 | 概要 |
---|---|
スケジュール式ビルダー | マネコンの表示に従って設定。簡単だが、柔軟性に欠ける。 |
スケジュール式 | cron式もしくはrate式を使う。慣れないと少し書きづらいが、柔軟に設定可能。 |
それぞれの方式の特徴や具体例を見ていきます。
スケジュール式ビルダーについて
「時間単位」と「数値」で「ローテーション間隔」を決めます。
スケジュール式ビルダーの具体例
以下の例では30日毎にシークレット情報をローテーションします。
以下の例では、2週間毎に、月曜日にシークレット情報をローテーションします。
以下の例では、半年毎に、第4土曜日にシークレット情報をローテーションします。
「時間単位」に「週」と「月」を選んだ場合は、オプションとして開始時刻の指定も可能です。 なお、時刻はUTC時間となりますので、ご注意ください。
スケジュール式ビルダーだと毎月1日にローテーションできない
上述した通り、スケジュール式ビルダーは設定が簡単ですが、柔軟性に欠けます。 例えば、 「毎月1日にローテーション」という設定はできません。 時間単位を「月」にすると、曜日の選択が必須になってしまうためです。 かといって、月によって日数は異なるので、時間単位を「日」にするわけにもいきません。
そのような場合は、次に紹介する「スケジュール式」を使用します。
スケジュール式について
Linuxでもお馴染みのcron式を使用します。 ただし、 AWSのcron式はLinuxとは微妙に書式が違います。 例えば、Linuxでは指定できない月末指定などが可能ですし、フィールド数も異なります。詳細は以下を参照してください。
こちらであれば、毎月1日の指定も可能です。
スケジュール式の注意点
スケジュール式ビルダーでも記載した通り、時刻はUTCです。 そのため、 「日本時間の毎月1日AM3時」を指定したい場合、cron式は「毎月末日のPM6時」にする必要があります。
改めて、スケジュール式の具体例
上記を踏まえ、改めてスケジュール式の具体例を見てみます。
「UTC時間の毎月末日のPM6時=日本時間の毎月1日AM3時」となります。 AWSのcron式で末日を指定する場合、日にち(左から3番目のフィールド)にLを指定します。 また、指定した日にちが何曜日であっても構わない場合、曜日(右から2番目のフィールド)の指定を?にします。
(補足)スケジュール式ビルダーでも、裏でcron式が作成される
上述の通りスケジュール設定の方法は2種類あるのですが、実際にはスケジュール式ビルダーを使った場合も、裏でcron式(もしくはrate式)が作成されています。 最後の確認画面で「ローテーションスケジュール」の項目を見ると、cron式が記載されているのが確認できます。
おわりに
以上、AWS Secrets Managerの自動ローテーションのスケジュール設定についてでした。 スケジュール式ビルダーとスケジュール式の違いや、AWSのcron式に慣れていないと、指定に少々戸惑う部分かと思います。 同じようにお悩みの方に、この記事が少しでも参考になれば幸いです。
山下 祐樹(執筆記事の一覧)
2021年11月中途入社。前職では情シスとして社内ネットワークの更改や運用に携わっていました。 2023 Japan AWS All Certifications Engineers。