プログラマでありたい

おっさんになっても、プログラマでありつづけたい

AWSのAZの割り当ては、アカウントごとに違うという話

 先週の金曜日(2019/8/23)に発生したAWSの東京リージョンで大規模な障害が発生しました。障害の内容は、一つのAZで空調設備の問題からEC2インスタンス並びにEBSに問題が発生したという事象です。詳細についてはAWSから発表があるので、そちらをご参照ください。
aws.amazon.com

 障害の最中にTwitterのタイムラインを見ていると、単一AZ障害ではなく複数のAZで障害が発生しているのではないかという観測が多く見られました。障害としては、AWSの発表通り単一AZ障害です。では何故多くの人に勘違いされたのでしょうか?理由は2つあります。

  • AZの割り当ては、アカウントごとに違うという事が知られていない
  • マルチAZ構成にしていても、単一AZの障害の影響を受ける

ここでは前者のAWSアカウントの割り当ての話を説明します。

あなたが見ているap-northeast-1aは、私が見ているap-northeast-1aと違うかもしれない


 障害発生中に下記のようなTweetをしたところ、知らなかったという反応を沢山いただきました。これを、もう少し説明してみます。

 実はAWSのAZのマッピングは、アカウントごとに異なっています。あるアカウントのap-northeast-1aのデータセンター群は、違うアカウントのap-northeast-1cと同じデータセンター群かもしれないです。そうなっている理由としては、AZごとの利用率の偏りを避けるためだと推測しています。リストの一番最初に出てくる1aをみんなが使うと、AZごとにインスタンス利用数等が著しく偏る恐れがあります。そうならないようにAZのマッピングを変えることで回避しているのでしょう。
 マッピングの違いについては、公式のドキュメントに記載されています。

docs.aws.amazon.com

リージョンごとのアベイラビリティーゾーンの数とマッピングは、AWS アカウント間で異なる場合があります。アカウントで使用可能なアベイラビリティーゾーンのリストを取得するには、Amazon EC2 コンソールまたはコマンドラインインターフェイスを使用できます。詳細については、「リージョンとアベイラビリティーゾーンの記述」を参照してください。

AWSアカウントのAZのマッピングを知るには?


 それでは、AZのマッピングを知るにはどうしたら良いのでしょうか?2018年の末くらいに、AZ IDという一意のIDが表示されるようになりました。これを使うとアカウントのマッピングに関わらずAZを一意に識別できるようになります。具体的には、VPCのサブネットの作成や詳細のところに出てくるので、それをご参照ください。

f:id:dkfj:20190826081052p:plain
f:id:dkfj:20190826081353p:plain

昔はどうやってマッピングを知っていたのか?


 ここからは余談です。AZ IDが出てきたことで、簡単にマッピングを知ることができるようになりました。実はこのAZ IDがなくても、マッピングを推測することは可能だったのです。その答えはスポットインスタンスの価格の推移です。スポットインスタンスの価格の推移は、AZごとです。複数のアカウントの価格の推移を突き合わせると、推測できるという寸法です。

f:id:dkfj:20190826081812p:plain

※スポットインスタンスの乱高下が、ほとんど無くなってきたなぁという感想

まとめ


 VPC Peeringが無い時代は、AZの割り当てが解らなくても余り困りませんでした。今は解るようになっています。ただ、解った所で、それほど気にする必要がないのも事実です。一方で今回のような自体が起きると、知っていないと混乱します。ということで、豆知識として覚えておいてください。ここAWS認定試験で必ず出ないポイントとなっております。試験のポイントについては、オレンジ本をご参照ください。あと、来月の技術書典7に初参加です。よろしくお願いいたします。

 今回すっ飛ばした「マルチAZ構成にしていても、単一AZの障害の影響を受ける」理由と対策については、明日くらいに解説します。

2019年8月27日追記: 続き書きました
マルチAZ構成で単一AZの障害の影響を受けるのは何故か? - プログラマでありたい


AWS認定資格試験テキスト AWS認定 ソリューションアーキテクト-アソシエイト

AWS認定資格試験テキスト AWS認定 ソリューションアーキテクト-アソシエイト

  • 作者: NRIネットコム株式会社,佐々木拓郎,林晋一郎,金澤圭
  • 出版社/メーカー: SBクリエイティブ
  • 発売日: 2019/04/20
  • メディア: 単行本
  • この商品を含むブログを見る
BOOTHで電子書籍販売中!!
takuros.booth.pm

Japan APN Ambassador 2019ならびに2019 APN AWS Top Engineersになりました(なってます)

 随分前に発表されてTwitterでも呟いておりましたが、ライフログとしてはこちらの方が振り返りやすいので改めて書いておきます。Japan APN Ambassador 2019ならびに2019 APN AWS Top Engineersに選出されました。周りの方々のご協力に、感謝です。

f:id:dkfj:20190613172521j:plain
※NRIの同僚で同じく選出された瀬戸島さんと、AWSの方々との写真です。


Japan APN Ambassador 2019



Ambassadorというのは、AWSのグローバルなプログラムで、

世界中のAPN Consulting Partnerから卓越した技術力を持ち、社外への情報発信(セミナーでの発信、Blogや書籍での発信)をしているメンバーが選出されます。

とのことです。日本では今年から制度が始まり14名選出されました。

2019 APN AWS Top Engineers



 併せて受賞したなのが2019 APN AWS Top Engineersです。こちらは、社内での活動(案件・人材育成)と社外での活動(発信)を評価するようです。
 なお、併せて受賞と書きましたが、AmbassadorとTop Engineersのエントリーフォームは同じで、先にTop Engineersに選ばれましたよ〜ってメールを貰った後にしばらくして、Ambassadorにも選ばれましたという経緯です。Ambassadorの人が必ずTop Engineersに選ばれているのか不明ですが、おそらくTop Engineersの中から選出されているのかなと思います。

aws.amazon.com

なぜ選ばれたのか?



 あくまで推測ですが、私の場合はNRIネットコムという会社の中でAWS事業を推進する立場にあります。そこで、当然様々な案件に関わりますし、人材育成も行っています。特に2018年度は社内の研修講師として、かなりの数の講座を受け持ちました。対外発表面は最近サボっていたのですが、書籍の執筆は継続的に続けており、その辺りが評価されたんじゃないかなぁと思います。

これからどうするの?



 今までの活動を評価されたというのは、素直に嬉しいです。とりあえず一発屋にならないように、来年もTop Engineersに選出されるように精進します。あとは、後進の育成ですね。実は社内で私以外誰も応募しておりませんでした。選ばれそうな実力を持った人は社内には沢山いるので、そういった人たちのアピールと対外進出を支援していこうと思います。
 また授賞式の時にAWS相澤さんが「Go Globalの精神で、世界に進出していってください」と話されていました。せっかくなので、今年は日本のみならず世界にもアピールできるような事を考えて実行していこうと思います。出来ることからですけどね。

AWS認定資格試験テキスト AWS認定 ソリューションアーキテクト-アソシエイト

AWS認定資格試験テキスト AWS認定 ソリューションアーキテクト-アソシエイト

  • 作者: NRIネットコム株式会社,佐々木拓郎,林晋一郎,金澤圭
  • 出版社/メーカー: SBクリエイティブ
  • 発売日: 2019/04/20
  • メディア: 単行本
  • この商品を含むブログを見る

Nature RemoとAmazon Echoの連動で家電操作は、エアコンが便利

随分前に自宅のIoT化ということで、Nature Remo miniを導入しました。構成は割とスタンダードだと思うのですが、Amazon Echo(Alexa)とNature Remo miniを連動させて、居間にあるリモコンで操作できる家電各種と連動させています。

連携させたのは、下記の4台です

・テーブル上のメインの電灯
・エアコン
・テレビ
・ファン付きシーリングライト

f:id:dkfj:20190814004340p:plain

利用風景


 なかなかイメージがしにくいと思うので、実際の動作の様子を音声で聞いてください。出演者は、私とAlexa(Amazon Echo)とエアコンさんです。

私:   Alexa エアコンつけて
Alexa:  はい
エアコン:温度は28℃に設定されました
私:   Alexa エアコンけして
Alexa:  はい
エアコン:運転を停止しました

 このエアコン、ダイキンのうるるとさららで喋ります。Alexaより喋ってます。買った当初は喋るの意味ないなと思ってたのですが、Alexaと連動させると近未来感が出てきて非常にグッドです。

Nature Remoとの連動に効果を発揮する家電


 半年くらい使ってみての感想ですが、Nature Remoとの連動が効果を発揮する家電は次のようなものです。

  • リモコンの利用頻度が少ない
  • 操作が単純

 我が家では、エアコンとシーリングライトについているファンを回すのに活躍しています。シーリングライトのファンは回すと便利なのですが、そのためだけにリモコンを用意するのが面倒くさくて永らく使っていませんでした。Nature Remoのおかげで再び回りだすようになりました。

f:id:dkfj:20190812180721j:plain

意外に連動効果がない家電


 一番最初に試して、あまり意味がなかったなと悟ったのは電灯・ライトです。居間の構造上、入り口すぐの時にオンオフのスイッチがあり、必要な時はそれを操作した方が早いです。またスイッチがオフの状態でAlexaで操作しても、当然ながら電気はつきません。もしこれが寝室だったら、布団に入って寝る前に本を読んで、そのまま布団から消すといった効果があるかもしれません。が、今の所、寝室への導入はしておりません。

 そして同じく効果の薄い連動が、ルンバです。IT家電の代名詞の一つ、ルンバさんもNature Remoとの連携機能があります。ただ我が家の状況的には、連動してもあまり意味がないなということで解除しています。なぜならば、散らかし放題の2人の幼児がいる我が家では、ルンバさんを動かす前に部屋の片付けが必要です。その労力を費やした後にルンバさんの稼働となるわけですが、そこの部分だけ音声にしてもあまりありがたくないなぁというのが実感です。ちなみにルンバさん、任意の時間に掃除してもらうより、決まった時間に動くように設定しておいて、その前に強制的に片付けざるを得ない状況にする方が効果的ですよ。

テレビとの連動はどうなの?


 よく聞かれるのが、テレビとの連動。我が家ではリアルタイムのテレビを見ることが殆どありません。録画済みのものや、Netflix等のオンデマンドTVです。なので、Alexaさんで操作するには少し無理があります。結果的に使ってるのは、テレビを消す時だけです。ただ、これはこれで便利です。テレビを見るのを止めない子供たちに、Alexaさんは無慈悲にテレビを消してくれます。もちろん怒りの矛先は私にきますが。

まとめ


 Nature Remo miniは5〜6千円くらいで買えるので、スマートスピーカーを持っている方は是非ご検討をお勧めします。Amazonや家電量販店でも、定期的に安売りしているので時期見計らって買ってみてはいかが?ちなみに私は使っていないのですが、インターネット経由で家電の操作もできます。エアコン消したかなといった心配も、Alexaアプリから確認できるようになります。

Nature Remo mini 家電コントロ-ラ- REMO2W1

Nature Remo mini 家電コントロ-ラ- REMO2W1

Echo Dot  第3世代 - スマートスピーカー with Alexa、チャコール

Echo Dot 第3世代 - スマートスピーカー with Alexa、チャコール

Capital Oneの個人情報流出事件に思うこと

 2019年7月末に、米大手金融機関であるCapital Oneが不正アクセスによる1億人を超える個人情報の流出を発表しました。規模もさることながら、Capital OneはAWSから何度も事例に取り上げられるような先進的な企業だったので、個人的にかなり衝撃を受けました。また、攻撃手法についても、従来の単純な設定ミスを狙ったものではなく、より一歩踏み込んだ攻撃という印象を受けました。

攻撃手法


 攻撃手法については、piyologさんのSSRF攻撃によるCapital Oneの個人情報流出についてまとめてみたが非常に解りやすいので、まずはご参照してください。
piyolog.hatenadiary.jp

 攻撃手法を簡単にまとめると、WAFの脆弱性を利用してIAM Roleのクレデンシャル情報を取得し、それを手元から利用して情報を取得したという形です。piyologさんの図を、再描画させて貰いました。
f:id:dkfj:20190812151512p:plain

どうすれば良かったのか?


 情報流出の一次的な原因としては、WAFです。セキュリティ製品については、もう独自の運用でカバーできる範囲ではないので、AWS WAF等のマネージド・サービスもしくは、専門の会社が提供する製品を利用するのがあ良いでしょう。ただ、あくまでWAFについては一次的な原因で真の問題については、別のところにあると思います。それは、不用意に大きな権限を持ったIAM Roleを利用した点にあります。

 対策としては、2点考えられます。

IAM Role側の対策
  • 特定のS3 Bucketのみ接続できるようにする
  • 必要なアクション(例えばPut)のみ権限を付与する
S3 Bucket側の対策
  • Bucket Policyでec2 instanceが属するVPCからのみ接続できるように制限する

f:id:dkfj:20190812152706p:plain

 S3に格納する情報は、非常に重要なものが含まれるケースがあります。その場合、IAMポリシーのみの設定のみで防御するのは危険です。必ずBucket Policyでも制限を加えるべきです。Bucket Policyの制限は強力で、どのようなIAMの権限を与えていても、ポリシーに合致していないと見ることはできません。

悩ましい点


 上記の設定をすれば今回の事件は防げたと思います。一方で、IAM Roleを付与していたec2がgetとput両方の権限が必要であった場合、ec2からの操作で情報流出の可能性はあったでしょう。また、それ以前に全てのAWSの設定のうちで、1箇所だけ設定を間違っていただけで、このような甚大な被害が発生する可能性があるのです。Capital Oneがどれほどの規模のシステムか具体的に知りませんが、おそらくかなり巨大なシステムでしょう。AWSアカウントやIAMロール、S3バケットの数は無数にあると思います。上記のような個別防御の他に、様々な観点で防御する必要があるでしょうね。

感想と宣伝


 AWSのセキュリティを考える上で、IAMに対する理解はかなり重要です。ということで、IAMに特化した150ページほどの薄い本を2019年9月の技術書典7に出展予定です。上記のような設計の考え方、具体的なポリシーの実例をドドンと挙げています。出展については、こちらを参照してください。
 また書いているうちに確信したのですが、IAMの防御は基本だけどそれのみでは、もはや足りません。そのうちどこかで、その他のセキュリティについても書こうと思います。

追記:上記の話を盛り込んだIAM本、書きました!!
BOOTHで電子書籍販売中!!
takuros.booth.pm

AWS認定資格試験テキスト AWS認定 ソリューションアーキテクト-アソシエイト

AWS認定資格試験テキスト AWS認定 ソリューションアーキテクト-アソシエイト

  • 作者: NRIネットコム株式会社,佐々木拓郎,林晋一郎,金澤圭
  • 出版社/メーカー: SBクリエイティブ
  • 発売日: 2019/04/20
  • メディア: 単行本
  • この商品を含むブログを見る
Amazon Web Services 業務システム設計・移行ガイド (Informatics&IDEA)

Amazon Web Services 業務システム設計・移行ガイド (Informatics&IDEA)

技術書典7に出展します

 Twitterで呟きましたが、9/22(日)に開催される技術書典に出展します。
techbookfest.org

出展内容


 とりあえず出すことを決定してるのは、AWSのリソースに対する認証認可の機能であるIAMに関する本です。おそらく100ページから150ページほどになると思いますが、その中でひたすらIAMに関することを取り扱います。商業誌だと1テーマでこれだけ書くのは厳しいので、技術書典ということで好きに書かせてもらいます。

f:id:dkfj:20190731144719p:plain

なぜ出展するのか?


 商業誌より儲かりそうだからという邪な考え方もあるますが、自由度の高さが魅力です。あと、Kindle等で直接出版をいつかしてみたいという夢を数年前から持っておりました。が、締切がないと全く進まないので、無理やり締め切りを作るために技術書典さんのイベントを利用させて貰いました。

目次(案)


 取り扱うテーマとしては、次のような感じです。既に5章までは書いています。書いているうちに多少追加削除していくとは思うので、ご愛嬌ということで。

第1章 AWSとIAM
 1.1 認証と認可
 1.2 AWSのアカウントの種類
 1.3 AWSアカウント
 1.4 IAMユーザー

第2章 IAMの機能
 2.1 IAMユーザー
 2.2 IAMグループ
 2.3 IAMポリシー
コラム AWS 管理ポリシーとカスタマー管理ポリシーの使い分け
 2.4 IAMロール
 2.5 パーミッション・バウンダリー
 2.6 IAMの機能のまとめ
コラム AWSアカウントとIAMの関係

第3章 IAMチュートリアル
 3.1 IAMポリシーの作成
 3.2 IAMグループの作成
 3.3 IAMユーザーの作成
 3.4 クロスアカウントロールの作成

第4章 IAMポリシーのデザインパターン
 4.1 ホワイトリスト・パターン
 4.2 ブラックリスト・パターン
 4.3 IAMグループを利用したハイブリット・パターン
 4.4 IAMポリシーのデザインパターンのまとめ
 コラム 最小権限の探求

第5章 IAMグループのデザインパターン
 5.1 複数グループに所属
 5.2 グループ内に複数ポリシー
 5.3  IAMグループのデザインパターンのまとめ
 コラム グループの階層構造について

第6章 IAMとセキュリティ
 6.1 IAM権限付与で守るべきポイント
 6.2  AWS アカウント(ルートユーザー)を使わない
 6.3 IAMに関する権限付与
 6.4 Lambda のリソースベースのポリシーに注意
 6.5 インターネット公開系の権限
 コラム ec2の権限範囲の問題
 6.6 特定 IP からのアクセスと VPC 内からのアクセス
 6.7  アクセスキーとシークレットアクセスキーを、原則作らない
 6.8  CapitalOneの情報流出事件に思うこと
 6.9  IAMとセキュリティのまとめ
 コラム IPアドレス制限の是非

第7章 IAMの運用
 7.1 IAMの運用の目的
 7.2 役割と責任範囲の明確化
 7.3 AWS アカウントの管理
 7.4 2要素認証の運用
 7.5 IAM ユーザーの管理
 7.6  二要素認証のデバイスの運用
 7.7  アクセスキーの管理
 7.8  マルチアカウントでの運用
 7.9  運用の自動化の検討事項
 コラム IAMを制するものがAWSを制する

第8章 CloudFormation
 IAMとCloudFormation
 CloudFormationの分割単位
 コラム ライフサイクルで考える

第9章 テンプレート集
 9.1 Adminユーザ
 9.2 ネットワーク管理者
 9.3 オペレーター
 9.4 開発者
 9.5 監査担当
 9.6 サーバレス開発者
 コラム IAMの設計で悩んだらベン図を書く

第10章 IAM以外のサービスの活用

この後


 今回は同人誌なので、原稿書いた後も全部やる必要があります。印刷の手配とかもやったことがないので、その辺りを1から学びながらやってみます。とりあえず8月中旬には原稿書き上げて、その辺に進みたいなと思います。余裕があれば、もう1冊くらい作りたい気もしますが、他の商業誌の執筆も並行してやってるので難しいでしょうね。あと売り子業、どうしよう?一人でやるのは、無謀ですかね?

書きました!!
BOOTHで電子書籍販売中!!
takuros.booth.pm

Shinkansen Free Wi-Fiは、どうやってつながるのか?或いは、なぜ割と速いのか?

 5年ほど前に、「新幹線のWifiは、どうやってつながるのか?或いは、なぜ遅いのか?」という記事を書いていましたが、新幹線のWi-Fiは遅くて使い物にならないものと思っていました。ところが最近、Shinkansen Free Wi-Fiが登場してきて、わりと快適になってきています。昔のLCXベースのWi-Fiは、新幹線1編成あたり最大2MBpsです。1編成ってのは、1号車から16号車合わせて1編成です。それで2MBps!!そりゃ、遅いですね。では、新しいShinkansen Free Wi-Fiは、どういった構成なのでしょうか?

Shinkansen Free Wi-Fiの仕組み


 仕組み・構成については、この記事に詳しく書いてありました。

 JR西日本に聞く、新幹線の無料Wi-Fiサービス「Shinkansen Free Wi-Fi」開始の舞台裏

 LTEベースで、JR東海・九州はNTTグループで、JR西日本はauと、JR各社ごとに通信キャリアを変えているそうです。で、設置単位は何と1両ごと、車内案内表示器の空きスペースに設置しているそうです。LTEの要求スペックも、100Mbps以上のスループットが出るように設計されているそうなので、それなりに速いのも納得できますね。

 走っている場所により速度はマチマチですが、だいたい1Mbps以上はでている感じでした。

f:id:dkfj:20190428145105p:plainf:id:dkfj:20190428145122p:plain

※Googleさんの回線速度テストを使っています。1Mbpsの時は、非常に低速ですとディスられていますが。

 ということで、早く全車両導入して欲しいものですね。2020年3月を目標に、順次設置を進めているそうです。

初学者のAWSの学び方

 先日、JAWS-UG 初心者支部#17 AWS勉強しNight!AWS認定資格取得 虎の巻と立て続けにAWSの習得の仕方というテーマで登壇させていただきました。どちらの参加者もとても熱心で、AWSを学ぼう熱を感じました。

登壇資料


speakerdeck.com

AWSの学び方


 イベントの中で、複数の方のAWSの学び方が語られていました。聞いていると、だいたい一定のパターンがありました。

  1. 自分ごとにする(=AWSを学ぶ動機付けを明確にする)
  2. 実際に手を動かす
  3. 解らないところは、都度資料を見つつ確認する
  4. 身につけた事をアウトプットする

 つまり勉強のための勉強にしないということですね。AWSは今では100を優に超えるサービスがあります。これを一から全部体系的に勉強しようとすると、膨大な時間が掛かります。そしてAWSのサービスは、下手したら自分が学ぶスピードより速く拡張していっています。ということでお勧めは、基本的な事と使う事を中心に学んでいくという方法です。

AWSの学ぶためのチュートリアル

 初めてAWSを学ぶ際のお勧めは、次のとおりです。

f:id:dkfj:20190427152419p:plain

 自分が本を書いているからという手前味噌感は半端ないですが、初学者に本はやはりお勧めです。今だとネットで良い教材が揃っているのも事実です。一方で本には本の良さがあり、ちゃんと構成を練られた本であれば、対象とするテーマに対しての網羅性が高く順を追って過不足なく解説されているものです。
 ネットで学ぶのも良いのですが、ネットにアクセスするのは能動的である必要があり、キーワードを知らないと調べられないという構造があります。つまり初めて学ぶときに、全体像が掴みにくいという問題があるのです。もちろん、その辺りをちゃんとカバーしている優良なサイトも沢山ありますが、最初にそこに辿り着けるかという問題があります。初学者は書籍やコースで受動的に学び、中上級になったら能動的に学ぶのがよいでしょう。

AWS認定ソリューションアーキテクト – アソシエイト

 手を動かしながら学ぶの大事と話しましたが、ではAWS認定試験はどのように位置づければ良いのでしょうか?これは、自分が達成したレベルを客観的に測るための物差しとすべきだと思います。AWS認定試験は、試験範囲の網羅性・設定されたレベルに対しての難易度の調整の面においても良く出来ていると思います。
 また、試験を受けることによって、知らなかった機能や使い方に気がついて、あとで学び直すきっかけにもなります。ちょうど新バージョンに対応したAWS認定ソリューションアーキテクトの試験本も3冊立て続けに発売され、学びやすい土壌もできています。ぜひ、挑戦してください。そして願わくば、日本でもプロフェッショナルレベルの試験対策本が出るほど、AWS技術者層としての厚みが出てくればと思います。

AWS認定資格試験テキスト AWS認定 ソリューションアーキテクト-アソシエイト

AWS認定資格試験テキスト AWS認定 ソリューションアーキテクト-アソシエイト

  • 作者: NRIネットコム株式会社,佐々木拓郎,林晋一郎,金澤圭
  • 出版社/メーカー: SBクリエイティブ
  • 発売日: 2019/04/20
  • メディア: 単行本
  • この商品を含むブログを見る