KSMNの IoT ×アクアリウム

アクアリウム × IoT

AWS Organizationsとは?アカウント追加&ログインする方法は?

はじめに

こんにちは!KSMNです。ラズパイ無線ルータの設定・各ラズパイからの接続設定も終わり、いよいよラズパイ無線ルータにAWS IoT Greengrass Coreを導入します。

f:id:KSMN:20200720214130p:plain

しかしその前に今回の検証?プロジェクト?用に、自分がいま持っているアカウントとは別にAWSアカウントがほしいなと思いました。そこでAWS Organizationsの出番です。AWS IoT Greengrass Coreの話は別の機会にするとして、、、今回はAWS Organizationsについて紹介したいと思います。

AWS Organizationsとは?

ドキュメントに書いてある通りですが、複数のAWSアカウントを管理する機能です。

docs.aws.amazon.com

組織単位 (OU)と呼ばれるグループでアカウントをツリー構造で管理します。例えば以下なイメージです。見てわかるように実際の企業や組織の部署のツリー構造のように表現できます。もちろん、こんな風にしなくてはならないというわけではないです!

f:id:KSMN:20200724224735p:plain

アカウントの追加と管理

アカウント追加

docs.aws.amazon.com

Organizationsでは2つの方法でAWSアカウントをOUに追加することができます。

f:id:KSMN:20200727221158p:plain
「アカウントを追加」をクリック

f:id:KSMN:20200727221228p:plain

「アカウントの招待」か「アカウントの作成」かを選択することができます。そう、既存のアカウントでもOrganizationsに追加することができます。組織内でいわゆるシャドーITのようにAWSアカウントの利用があっても、後からOrganizationに追加し請求を一元管理することができるわけですね。またこのOrganizationsの画面からアカウントの新規作成も可能なので、いちいちアカウント作成のためにクレジットカード情報などを入力しなくてもよいです。今回はAWS IoT用に新規作成することにします。

f:id:KSMN:20200727221846p:plain
必要事項を入力

アカウント名とメールアドレス、IAMロール名を入力します。ここで入力するIAMロールはOUに追加したAWSアカウントへのログインに使用します。Organizationsに追加したアカウントへはIAMロールでのログイン、いわゆるスイッチロールでログインします(デフォルトでは)。もちろん追加したアカウントへスイッチロールでログインした後はIAMユーザを作成することができるので、IAMユーザでのログインも可能です。しかし、基本的にはOrganization内に別にスイッチロール用アカウント(いわゆる踏み台アカウント)を用意して、そこにIAMユーザを追加して各AWSアカウントへはスイッチロールでログインするのがよいでしょうね。。。「作成」をクリックすると作成が実行されます。

f:id:KSMN:20200727224340p:plain
しばらくすると情報が表示される

そしてしばらくするとアカウント番号などの情報が表示され、正常に作成されたことがわかります。

OUの作成

さてIoT検証のアカウントを作成しましたが、IoT検証用OUも作成してみます。

f:id:KSMN:20200727224750p:plain
「アカウントの整理」からOUの管理ができる

「アカウントの整理」でOUの追加・管理が可能です。上記で作成したIoT-Aquariumアカウントが確認できます。「新規組織単位」をクリックします。

f:id:KSMN:20200727225040p:plain
名前を入力し作成

作成は名前を入力するだけです。

f:id:KSMN:20200727225315p:plain

作成すると一覧とツリービューに追加されます。IoT-AquariumアカウントをIoTのOUへ移動させます。下のようにチェックして移動をクリックするだけです。

f:id:KSMN:20200727225700p:plain

f:id:KSMN:20200727225709p:plain

f:id:KSMN:20200727225849p:plain
IoT配下に移動された!

スイッチロール設定

さて、Organizationsへ新規作成で追加したAWSアカウントへは、デフォルトではスイッチロールでログインすると前述しました。スイッチロールのためIAMポリシーを設定しましよう。以下のようなIAMポリシーを対象のIAMユーザもしくはIAMグループへアタッチします。アカウント番号とロール名はそれぞれの環境のものへ読み替えてください。あとは対象のIAMユーザでスイッチロールできればokです。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AssumeRole",
      "Effect": "Allow",
      "Action": "sts:AssumeRole",
      "Resource": "arn:aws:iam::アカウント番号:role/ロール名"
    }
  ]
}

ポリシーの管理

docs.aws.amazon.com

さて、Organizationsでは配下のAWSアカウントに対して、いくつかの種類のポリシーを適用することができます。以下の画像では4つですが設定画面ではもう少し多くの種類の設定が可能です。

f:id:KSMN:20200727231246p:plain
ポリシー

今回はIoTの検証でどれだけ請求されるか管理したいので、タグポリシーを有効にします。といいつつIoT Greengrassを利用するのでAWSリソースに課金が発生しないような。。。

f:id:KSMN:20200727231745p:plain
こんな感じ

作成したら先ほどのIoT用OUの画面でポリシーをアタッチします。

f:id:KSMN:20200727232031p:plain

これでIoT用OU内のアカウントは設定したポリシーでタグを付与しないといけません。

まとめ

いかがでしたでしょうか?Organizationsを使うと簡単にアカウントの追加・管理が可能です。またポリシーによりOU配下のアカウントへバックアップ・タグの管理まですることが可能です。請求の管理の面で、私はタグポリシーで付与しないといけないタグを指定できるのは非常に便利に感じました。皆さんも複数アカウントを利用する場合は、ぜひAWS Organizationsを利用してみてください。