AWS基礎

AWSに関わることになったので、基本的なキーワード等について簡単にメモる。

最低限のキーワードをピックアップしているため、その他の気になるキーワードや詳細解説については[AWS公式サイト](https://docs.aws.amazon.com/ja_jp/)を参照ください。


## AWSのアカウント

AWSには**AWSアカウント**と**IAMユーザー**と呼ばれる２種類のアカウントがあります。

AWSアカウントとは、AWSサインアップするときに作成されるアカウントのことです。このアカウントでは、AWSアカウントの全てのサービスをネットワーク上のどこからでも操作できる権限を持っているため、**ルートアカウント**とも呼ばれています。

非常に危険なアカウントであるため、取り扱いには十分注意する必要があります。従って、日常的なタスクには、それが管理者タスクであっても、ルートユーザーを使用しないことが推奨されており、ルートユーザーは最初のIAMユーザーを作成するためだけに使用し、それ以外の操作はIAMユーザーを利用するというのがベストプラクティスとされています。

IAMユーザーについては、別途後述します。



## リソース

リソースとは、S3のバケット、オブジェクト、EC2インスタンス等AWS上のリソースのことを指します。**ARN**によってリソースを特定できます。

### ARN（Amazon Resource Name）

Amazon リソースネーム (ARN) は、AWS リソースを一意に識別します。IAM ポリシー、Amazon Relational Database Service (Amazon RDS) タグ、API コールなど、明らかに全 AWS に渡るリソースを指定する必要がある場合、ARN が必要です。




## AWS Organizations

AWS Organizations は、作成し一元管理する組織に、複数の AWS アカウントを統合するためのアカウント管理サービスです。AWS Organizations には、利用者の予算、セキュリティ、コンプライアンスのニーズをより適切に満たすアカウント管理および一括請求機能が備わっています。組織の管理者は、組織内にアカウントを作成したり、既存のアカウントを組織に招待して参加させることができます。



## IAM（Identity and Access Management）

IAMでは、AWS のサービスやリソースへのアクセスを安全に管理できます。IAM を使用すると、AWS のユーザーとグループを作成および管理し、アクセス権を使用して AWS リソースへのアクセスを許可および拒否できます。

つまり、「誰が」「どのAWSサービスの」「どのリソースに対して」「どんな操作を」「許可する(許可しない)」という情報を定義することが可能となります。



### IAMポリシー

IAMではポリシーによって「Action（どのサービスの）」「Resource（どういう機能や範囲を）」「Effect（許可 or 拒否）」という３つの大きなルールに基づいてAWSの各サービスを利用するうえでのさまざまな権限をせっていします。

AWSが最初から設定しているポリシーを**AWS管理ポリシー**といい、各ユーザーが独自に作成したポリシーを**カスタマー管理ポリシー**といいます。作成されたポリシーは、ユーザー、グループ、ロールに付与することができます。

使い分けとしては、AWS管理ポリシーで基本的な権限を付与し、カスタマー管理ポリシーでIPアドレス制限などの成約をかけるといった方法があります。

※対象ごとに作成・付与するインラインポリシーと呼ばれるポリシーも存在するが、管理が煩雑になるので基本的には利用しない方向がよいが、一時的に個別のユーザーに権限を付与する時に利用するといった方法がある。



### IAMユーザー

IAMユーザーは、AWSの各利用者に１つずつ与えられる、AWSを利用するための認証情報（ID）です。利用者がAWSマネジメントコンソールにログインして操作するときや、CLI（後述）を利用してAWSを操作するときに使用します。

各IAMユーザーに対して、操作を許可する（しない）サービスを定義することができ、各IAMユーザーの権限を正しく制限することで、AWSをより安全に使用することができます。



### IAMグループ

一方、グループは同じ権限を持ったユーザーの集まりです。グループは、<u>AWSへのアクセス認証情報は保持しません</u>。認証はあくまでユーザーで行い、グループは認証されたユーザーが<u>どういった権限（サービスの利用可否）を持つかを管理します</u>。

グループの目的は**権限**を容易に、かつ、正確に管理することです。複数のユーザーに同一の権限を個別に与えると、権限付与の過不足等、ミスが発生する確率が高くなります。

ユーザーとグループは多対多の関係を持つことができるので、１つのグループに複数のユーザーが属することはもちろん、１つのユーザーが複数のグループに属することもできます。

ただし、グループを階層化することはできないので、グループで一定の権限をまとめておいて、ユーザーに対して必要なグループを割り当てる運用が望ましいです。



### IAMロール

ロールは永続的な権限（アクセスキー、シークレットアクセスキー）を保持するユーザーとは異なり、一時的にAWSリソースへアクセス権限を付与する場合に使用します。

ロールを定義することで実現できることのひとつに、**クロスアカウントアクセス**があります。複数のAWSアカウント間のリソースを１つのIAMアカウント（IAMユーザー）で操作したい場合、ロールを定義して必要なAWSリソースに対するアクセス権限を一時的に与えることで実現できます。



## AWS CLI（Command Line Interface）

AWS コマンドラインインターフェース (CLI) は、AWS サービスをコマンドラインで操作することができる統合ツールです。基本的にはAWSマネジメントコンソールとほぼ同等の操作が可能。そのため、コンソール画面から行っていた操作をプログラムに組み込んだり、バッチ化することでAWSサービスをよりプログラマブルに利用することが可能になります。



## MFA（Multi-Factor Authentication：多要素認証・2段階認証）

AWSアカウントもIAMユーザーもAWSマネジメントコンソールにログインする時は、IDとパスワードを必要とします。しかし、AWSアカウントや重要な権限を持つIAMユーザーは、これだけの認証では不十分です。

AWSではIDとパスワードに加えて、ワンタイムパスワードを使った**多要素認証（MFA）**に対応しています。



## Amazon EC2（Amazon Elastic Compute Cloud）

Amazon EC2は、AWS クラウドでサイズが変更できるコンピューティングキャパシティーを提供します。Amazon EC2 の使用により、ハードウェアに事前投資する必要がなくなり、アプリケーションをより速く開発およびデプロイできます。Amazon EC2 を使用して必要な数 (またはそれ以下) の仮想サーバーを起動して、セキュリティおよびネットワーキングの設定と、ストレージの管理を行います。Amazon EC2 では、要件変更や需要増に対応して迅速に拡張または縮小できるため、サーバートラフィック予測が不要になります。





## Amazon S3（Amazon Simple Storage Service）

Amazon S3 はインターネット用のストレージサービスです。また、ウェブスケールのコンピューティングを開発者が簡単に利用できるよう設計されています。

Amazon S3 のウェブサービスインターフェイスはシンプルで、いつでも、ウェブのどこからでも容量に関係なくデータを格納および取得できます。これにより、すべての開発者が、スケーラブルで信頼性が高く、かつ高速で安価なデータストレージインフラストラクチャを利用できるようになります。このインフラストラクチャは、Amazon が使用しているウェブサイトのグローバルネットワークと同じものです。このサービスの目的は、規模の拡大や縮小のメリットを最大限に活かし、開発者に提供することです。



## AWS Cloud Trail

AWS CloudTrail は、AWS アカウントのガバナンス、コンプライアンス、および運用とリスクの監査を行えるように支援する AWS のサービスです。ユーザー、ロール、または AWS のサービスによって実行されたアクションは、CloudTrail にイベントとして記録されます。イベントには、AWS マネジメントコンソール、AWS Command Line Interface、および AWS SDK と API で実行されたアクションが含まれます。

CloudTrail は、作成時に AWS アカウントで有効になります。AWS アカウントでアクティビティが発生した場合、そのアクティビティは CloudTrail イベントに記録されます。

AWS アカウントアクティビティの可視性は、セキュリティと運用のベストプラクティスにおける重要な側面です。CloudTrail を使用して、AWS インフラストラクチャ全体のアカウントアクティビティを表示、検索、ダウンロード、アーカイブ、分析、応答できます。アクションを実行したユーザーやアプリケーション、対象のリソース、イベントの発生日時、およびその他の詳細情報を識別して、AWS アカウントのアクティビティの分析と対応に役立てることができます。

## Route53

Amazon Route 53 は、可用性と拡張性に優れたドメインネームシステム（DNS）ウェブサービスです。Route 53 を使用すると、ドメイン登録、DNS ルーティング、ヘルスチェックの 3 つの主要な機能を任意の組み合わせで実行できます。



## Terraform

HashiCorpが作っているツールで、インフラをコード化（Infrastructure as Code）するために利用する。

こちらは別途解説（予定）