Contents
基礎知識
●クレデンシャル
IDやパスワードをはじめとする、ネットワーク上でユーザ等の認証に用いられるセキュリティ情報の総称。
●SCIM
(System for Cross-domain Identity Management)
様々なドメイン間でユーザID情報のやりとりを自動化する。
複数のクラウドサービスやシステム間でユーザーIDの整合性を取るように管理するプロトコル。
●認証(AUTH)トークン
アクセス制御に用いられるデジタルトークン。一般的に、ユーザーがアプリケーションやサービスにアクセスする際に、ユーザー名とパスワードを入力することで認証が行われる。
●SSL/TLS
(Secure Sockets Layer/Transport Layer Security)
インターネットで情報を送受信する際の仕組み(プロトコル)の一種で、サーバ〜PC間の通信を暗号化して安全を担保する。
[利用方法]
クライアントに説明して、CSR(Certificate Signing Request)ファイルと呼ばれる証明書の発行申請書を作成。認証局にお金を支払い証明書を発行してもらい、サーバへインストールするなどの手続きが必要になる。
※証明書接続エラーは基本的にSSLエラーとして確認されることが多い。
[SSL証明書の種類]
| ドメイン認証型SSLサーバ証明書 (DV: Domain Validation) | (レベル:低)ドメイン認証 |
| 組織認証型SSLサーバ証明書 (OV: Organization Validation) | (レベル:中)ドメイン認証・会社実在認証 |
| EV SSL証明書 (Extended Validation) | (レベル:高)ドメイン認証・会社実在認証・電話実在認証 |
◇フェデレーション
一度の認証で複数のシステムを使ったり、複数のサービス(クラウドなど)、リソースやアプリケーションへのアクセスを受けられるようにするための仕組み。
[フェデレーションの方法]
シングルサインオン(SSO)を実現させるために方式が4つあり、「フェデレーション方式」はその一つである。
[参考サイト]
| Web ID フェデレーション | 【パブリックなトークン】 AmazonやSNS、Google(IdP:IDプロバイダー)がユーザーのトークンを発行することでサインインできる。その時に外部サービスのユーザー情報とIAMロールを紐づけて一時的にアクセス権限を付与する。 |
| その他外部 ID フェデレーション | 【内部組織のトークン】 IAM ロールを使用して、ID が組織または第三者のプロバイダー (IdP) からフェデレーションされたユーザーのアクセス許可を指定できる。社内のディレクトリなど、AWS 以外の ID をユーザーに有効。 |
●IAMフェデレーション
組織内の既存のIDシステム (IDプロバイダー) を利用して、AWSやその他のクラウドサービスへのアクセスを許可する仕組み。IDプロバイダーとフェデレーションを使用して、各リソースへのアクセスをユーザーに求める。
| フェデレーションタイプ | アカウントの種類 | アクセス管理対象 | サポートされている IDソース(プロトコル) |
|---|---|---|---|
| IAM | 単一のスタンドアロンアカウント | ・短期間の小規模デプロイにおける人間ユーザー,マシンユーザー | ・SAML 2.0 ・OIDC |
| IAM Identity Center | Organizations によって管理される複数のアカウント | ワークフォースの人間ユーザー | ・SAML 2.0 ・マネージド Active Directory ・Identity Center ディレクトリ |
| Cognito | いずれか | リソースへのアクセスに IAM 認可を必要とするアプリのユーザー | ・SAML 2.0 ・OIDC ・OAuth 2.0 ソーシャル ID プロバイダーの選択 |
◇ID プロバイダー(IdP)
| ★プロバイダーとは… 回線をインターネットと繋げる役割を担う接続事業者のこと。外部の人向けにトークンを発行してくれる事業者 |
・外部ユーザー ID にアカウント内の AWS リソースに対するアクセス許可を与えることができる。
※外部ユーザー=よく知られた IdP[事業者] (例: Login with Amazon、Facebook、Google)
・会社に既に企業ユーザーディレクトリなどの独自の ID システムがある場合に便利
・AWS リソースへアクセスが必要なモバイルアプリやウェブアプリケーションを作成する場合に便利
[大まかな付与プロセス]
既にユーザーIDをAWSの外で管理している(外部ユーザー)は、、、
1 : IAM ID プロバイダーエンティティを作成して、AWS アカウント と IdP の間に信頼関係を確立。
2 : AWS アカウント に IAM ユーザーを作成する代わりにトークンを作成(得る)。
3 : 外部 IdP は、OpenID Connect または SAML 2.0 のいずれかを使用して ID 情報を AWS に提供する。
4 : 以降から外部idPを使用してサインインする。
[参考公式サイト]
[ID プロバイダー×フェデレーション]
AWS のアカウント管理の仕組みである(IAM ユーザー)でユーザー認証をして AWS を利用できるようにするのではなく、外部の ID プロバイダー(IdP)で管理されている ID を使って認証して AWS を利用できるようにする仕組み(AWS が認証をするのではなく、AWS は認証後に渡されるもの(ID トークンなど)をみて AWS にアクセスする事を許可する)
[引用元サイト]
[IdP を直接 IAM にリンクする]
ID プロバイダーエンティティを作成して、AWS アカウントと IdP の間に信頼関係を確立する。IAMは、OpenID Connect (OIDC) または SAML 2.0 (Security Assertion Markup Language 2.0) と互換性のある IdP をサポートする。
※IAM Identity Centerを有効にせず、AWS アカウントを 1 つだけ使用するには、、、
OIDC または SAML 2.0 を使用して ID 情報を AWS に提供する外部 IdP で IAM を使用できる。
●OIDC
GitHub Actions など、AWS 上で実行しないアプリケーションを AWS リソースに接続できる。
●OIDC プロバイダー
AWSアカウントとOIDCをサポートする外部IdPとの信頼関係を確立するためのIAMエンティティ。OIDC 互換 IdP と AWS アカウント の間で信頼性を確立するときに IAM OIDC ID プロバイダーを使用する。
[引用元サイト]
◇プロトコル
[フェデレーションを実現させる技術]
フェデレーションを実現させるためのプロトコルの種類。フェデレーション認証の業界標準。
| OpenID Connect | 【トークン発行処理の標準仕様】 ※ベース:OAuth 2.0プロトコル サービス間で利用者の同意に基づきID情報を流通するための標準仕様。 利用者がOpenID提供サイトに登録したID情報を使って、ほかのOpenID対応サイトにログインすることが可能になる。 [参考サイト] |
| SAML 2.0 | 【異なるプロトコルの通信方法】 外部のアプリケーションおよびサービスにユーザーが本人であることを伝える標準化された方法のこと。 (※異なるインターネットドメインの通信を実現するための通信プロトコル) ユーザーを一度認証してから認証を複数のアプリケーションに伝える方法を提供し、シングルサインオン(SSO)技術を可能にする。誰が誰かを示すための標準化された方法。身元特定しなくても、身分証を見るだけで済む。 [参考サイト] ※SAML:Security Assertion Markup Language ※ベース:XML SAMLフォーマット ・SAMLアサーション 認証に成功したときにIDプロバイダーが発行するメッセージ。 ユーザーに関する認証・認可の情報がXML形式で出力され、サービスプロバイダーが受信し、内容を確認する。 |
[解釈]
idPがトークン発行 ⇒ フェデレーション機能(SSO)だけでサインインできるけど、ロールと紐づけることで安全性が確保される。これが基本(?)
IAM

【アカウント管理】
※Identity and Access Management
「IDの管理・認証・認可」を主とする。企業が利用するシステムごとに設定された複数のIDを統合管理し、同時にアクセス権限の適切な管理を行う。
権限レベル
| [強] ルートアカウント | [中] 管理者権限 (IAMユーザー) | [弱] パワーユーザー (IAMユーザー) |
| ・AWSルートアカウントのメールアドレスやパスワードの変更 ・IAMユーザーの課⾦情報へのアクセスに関するactivate/deactivate ・他のAWSアカウントへのRoute53のドメイン登録の移⾏ ・AWSサービス(サポート等)のキャンセル ・AWSアカウントの停⽌ ・コンソリデイテッドビリングの設定 ・脆弱性診断フォームの提出 ・逆引きDNS申請 | ルートアカウントと同等の権限はない | IAMの操作権限なし |
●アクセス許可の境界
IAMの高度な機能。管理ポリシー(AWS管理ポリシー / カスタマー管理ポリシー)を使って、アイデンティティベースのポリシーをIAMエンティティ(ユーザーやロール)に付与することで、IAM ユーザーやロールに対して「最大限許可できる操作の範囲」を制限するための仕組み。
・エンティティはアイデンティティベースのポリシーとそのアクセス許可の境界の両方で許可されているアクションのみを実行できる。
(実際のアクセス許可は、IAM ポリシーとアクセス許可の境界の両方で許可されている操作のみが有効になる(AND条件))
IAMポリシー
| AWS管理ポリシー (マネージド) | 予めAWSによって用意されている管理ポリシー。「ポリシー」単体として存在できて、複数のプリンシパルエンティティにアタッチして利用可能。ポリシーを変更するとアタッチされている全てのプリンシパルエンティティが変更適用。バージョニング、ロールバック可能。 |
| カスタマー管理ポリシー | ユーザー(お客様)自身が管理できる管理ポリシー。 |
| インラインポリシー | 特定のIAMユーザやIAMロール専用に作成されるポリシー。(使いまわしができない) 「ポリシー」単体では存在できず、プリンシパルエンティティ(1つのIAMユーザ)など、1対1でのアタッチしかできない。 |
AWSサービスやAWSリソース(リソース間の連携)に対する操作権限を定義して、IAMユーザやIAMグループにアタッチ。
| 特徴 | |
|---|---|
| JSON形式で 定義 | Action(どのサービスの)、Resource(どういう機能や範囲を)、Effect(許可/拒否) |
| Condition要素 | IAMポリシーのCondition要素内で、特定のタグと値を持つリソースへのアクセス制御できる。 |
| APIアクセスの設定 | ユーザーが呼び出すことができる API オペレーションを指定できる。 |
| MFA認証の 固定化 | 場合によっては、ユーザーが特に重要なアクションを実行することを許可する前に、このユーザーに AWS 多要素認証 (MFA) で認証することを求める追加のセキュリティが必要となることもある。 ・「Get-Session-Token」を呼び出す方法。 ・「Assumelore」を使用する方法。 [参考サイト] |
JSONポリシー要素
| 要素 | 説明 |
|---|---|
| Effect | 許可(Allow)または拒否(Deny) |
| Action | 許可・拒否する操作(例: s3:PutObject) |
| Resource | 操作対象リソース(例: arn:aws:s3:::example-bucket) |
| Principal / NotPrincipal | 操作者(誰が行うか)/それ以外を除外 ※NotPrincipalは、特定のプリンシパル(IAMユーザーやロールなど)以外のアクセスを拒否するために使われる。 "Effect": "Deny"と組み合わせて使用することで、「指定されたプリンシパル以外すべて拒否」というホワイトリスト的な制御が可能になる。 |
| Condition | 特定の条件(IP、時間、VPCなど)で制御 |
リソースポリシー vs アイデンティティポリシー 比較表
| 項目 | リソースポリシー | アイデンティティポリシー |
|---|---|---|
| 説明 | 特定の AWS リソースに適用される | 特定の IAM ユーザー、グループ、またはロールに適用される |
| ポリシー の場所 | リソース(S3 バケット、SNS トピック、SQS キュー)に直接アタッチされる | IAM エンティティ(ユーザー、グループ、ロール)にアタッチされる |
| ポリシー の目的 | リソースへのアクセスを制御する | IAM エンティティの操作を制御する |
| 誰に適用 されるか | 特定のエンティティ(他の AWS アカウント、IAM ユーザー、ロール) | 特定の IAM エンティティ(ユーザー、グループ、ロール) |
| ポリシー の形式 | JSON 形式で記述される | JSON 形式で記述される |
| クロスアカウントアクセス | リソースに対して他の AWS アカウントからのアクセスを許可できる | グローバルに適用。ポリシーはエンティティに直接アタッチされる |
| 例 | S3 バケットポリシー、SNS トピックポリシー、SQS キューポリシー | IAM ユーザーポリシー、IAM ロールポリシー |
| 適用対象 サービス | S3、SNS、SQS などのリソースを提供する AWS サービス | AWS Organizations など、アイデンティティを管理する AWS サービス |
ポリシーの検証・テスト
| Policy Validator | 文法に基づいていないポリシーを検出し、修正を求める。 |
| IAMPolicy Simulator | IAMのポリシー設定をテストできる。アイデンティティベースのポリシー、IAMアクセス許可の境界、組織のサービスコントロールポリシー、リソースベースのポリシーをテストおよびトラブルシューティングできる。 |
| DryRun (プール値) | 実際に要求を行うことなく、アクションに必要な権限があるかどうかを確認し、エラー応答を提供する。必要な権限がある場合、エラー応答はDryRunOperationとなる。 |
認証方式
| AWSアクセスキー | アクセスキーID/シークレットアクセスキーのセット。 IAMユーザまたはAWSアカウントの長期的認証情報を指す。 S3やEC2といったAWSの各サービスに対してプログラムにおけるアクセスを認証するために作成される認証キー。 |
| X509 Certificate | [参考:AWS公式] |
| MFA | Multi-Factor Authentication 多要素認証。ユーザーのスマートフォンからのコード、秘密の質問の答え、指紋、顔認識などを要求する。 |
●認証情報レポート(Credential Report)
監査向け情報。特定のIAMアイデンティティ(ユーザー、グループ、ロール)のIAM認証情報のレポートファイル。
※AWS Management Console、AWS SDK、コマンドラインツール、または IAM API から取得できる
[取得できる情報]
| 認証情報 | パスワード、アクセスキー、MFA デバイスなど認証情報のローテーション。 |
| 認証情報ステータス | MFA、最終ログイン時間、パスワード利用有無など。 【監査向け対応】 監査やコンプライアンスの作業支援。また、外部の監査人にレポートとして提供できる。 ・監査人はレポートをダウンロードできる。4 時間ごとに 1 回生成できる。 ・レポートをリクエストすると、IAM はまず AWS アカウント について過去 4 時間以内にレポートが生成されたかどうかを確認する。 |
●IAMデータベース認証
DB接続用。IAMのデータベース接続に認証機能を付与する。
| 対象データベース | MySQL および PostgreSQL |
| 仕組み | DBユーザーのパスワードなど資格情報の保存は不要。パスワードの代わりに IAM 認証トークン(署名付きの一時的な文字列)を使用して DB に接続。(IAM ユーザーまたはロール認証情報と認証トークンを使用してRDS DB インスタンスまたはクラスターに接続) ※RDSが立ち上げたMySQLなどにアクセスする際(通常はユーザー名とパスワードを利用してアクセス) ・アプリケーションがインスタンスで実行されている場合、インスタンスプロファイル認証情報を使用してデータベースにアクセス。 ・SSL 接続が必要で、DB インスタンスとの間で送受信されるデータは暗号化される。 |
| トークンの有効期限 | 有効期間は 15 分。AWS アクセスキーを使用して生成。 |
| 署名方式 | AWS Signature Version 4 を利用 |
[主なメリット]
- 認証情報の一元管理: IAM によって DB ユーザーの管理が可能(DBにユーザー情報を保存しなくてもよい)
- ネットワークセキュリティ: SSL/TLS による暗号化通信を使用
- EC2 連携: EC2 インスタンスに割り当てられた IAM ロールを使えば、パスワードなしで DB にアクセス可能
グローバル条件キー
すべての AWS サービスで共通して使用できるポリシー条件キー。これらは IAM ポリシーの Condition 要素で利用され、リクエストのコンテキストに基づいて、アクセス許可の条件を指定する。アクセス制御をより細かく設定するために使われる。
| 条件キー | 説明 |
|---|---|
| aws:SourceIp | リクエスト元の IP アドレスに基づいてアクセス制御 |
| aws:UserAgent | リクエストの User-Agent に基づいて制御 |
| aws:MultiFactorAuthPresent | MFA(多要素認証)が有効かどうか |
| aws:PrincipalArn | リクエストを行ったプリンシパルの ARN |
| aws:RequestTag/tag-key | リクエストに含まれるタグに基づく制御 |
| aws:ResourceTag/tag-key | リソースに設定されたタグに基づく制御 |
| aws:SecureTransport | HTTPS 経由のリクエストかどうか |
| aws:SourceAccount | リクエスト元の AWS アカウント ID |
| aws:SourceArn | リクエスト元のリソース ARN |
作業ロール
●サービスロール
信頼ポリシーが設定されており、必要なアクセス権のみを持つため、不要な権限を削減できる。
AWSサービスが他のサービスへのアクセスに使用するための信頼性が確保された一意の資格情報が使用される。
| 項目 | IAMロール | サービスロール |
|---|---|---|
| 用途 | AWS リソースへのアクセス権を付与するためのロール | AWS サービス(EC2、Lambda など)が他のサービスにアクセスするためのロール |
| 主体 | ユーザーアカウント、他のロール、AWS サービス | AWS サービス自体 |
| 割り当て先 | ユーザーまたはグループ | サービス |
| アクセス許可ポリシー | 一般的なアクセス許可ポリシー、カスタムポリシーなど | サービスによって事前に定義されたポリシーを使用 |
| 外部から信頼されるエンティティ | 他の AWS アカウントや外部 ID を信頼することができる | 信頼されるエンティティは AWS サービスのみ |
| セッションの期間 | 一時的なセッションが可能 | 固定された期間または無期限 |
| フェデレーション | クロスアカウントへのアクセス、一時的なセッションに使用可能 | サービスが他のサービスへのアクセスに使用 |
[参照先サイト]
IAMロール

【作業権限】(EC2インスタンスからのアクセスのみ)
一時的なセキュリティ認証情報を取得してAWSリソース(サービス)へアクセスができる。
| ★(ロール)信頼ポリシー…. JSON ポリシードキュメントで、他のアカウントやサービスが特定のIAMロールを引き受けることを許可する(IAMロールに必須の)ポリシー。信頼ポリシーで指定できるプリンシパルには、ユーザー、ロール、アカウント、およびサービスが含まれる。 |
[仕組み]
- STSに「一時的セキュリティ認証情報」の発行を依頼
- 発行された「一時的セキュリティ認証情報」を使って、AWSリソースにアクセスを行う。
※「一時的セキュリティ認証情報」をユーザーは管理する必要がな
ユーザーがアクセスキーを管理する必要がなくなる
※[一時的セキュリティ認証情報 とは]
セッショントークン、シークレットアクセスキー、有効期限、アクセスキー
[使用例]
EC2インスタンス上で稼働するアプリケーションに一時的にAWSのリソースへのアクセス権を与えたい
⇒ EC2インスタンス作成時にロールを付与することで可能
| インスタンス プロファイル | IAM ロールのコンテナ。EC2インスタンスのためのIAMロールが作成される。インスタンスの起動時に EC2 インスタンスにロール情報を渡すために使用できる。 |
| Assume Role (共有IAMロール) | 別アカウントのリソースにアクセスしたい時、使用するロール。(ロールの代行) 「アカウントAがアカウントBのS3バケットにアクセスしたい」などのシチュエーションで役に立つ。 ※実行権限を持つロールは作成元リソースが存在するアカウントに存在する必要があるため ●外部ID(専用)【ロールの使用ID】 第三者がIAMロールを引き受ける際、信頼ポリシー内で外部IDを使うとロールを安全に委任できる。 指定することで、ロールの使用権限が第三者に漏れたとしても、外部IDが一致しないと使用できない。 ①IAMロールの信頼ポリシーに外部IDを設定。 ②第三者はAWS CLIまたはAPIを使ってそのロールを引き受ける際、外部IDを指定。 |
| IAM Roles Anywhere | オンプレミスなどAWS外部のサーバーに、IAMロールを使って一時的な認証情報(クレデンシャル)を取得し、AWSサービスにアクセスできる。 ・AWS環境からアクセスキーやシークレットアクセスキーを払い出す必要がなくなり、 ・長期間有効な証明書ベースの認証を必要とするユースケースに適している |
[SAML フェデレーションアクセスを許可するロール]
IAMで作成するロールは、組織のどのフェデレーションユーザーの操作を許可されるかを定義する。
ロールの信頼ポリシーを作成するときは、前に Principal として作成した SAML プロバイダーを指定する。さらに、特定の SAML 属性に一致するユーザーにのみロールへのアクセスを許可するように、Condition 付きの信頼ポリシーのスコープを設定できる。
[引用元サイト]
STS

【一時的なアクセス許可】
※Security Token Service
「有効期限」を設定した一時的なセキュリティキーを作成することで、信頼するユーザーへAWSリソースの操作・管理を許可する(アクセスキー)。
・セキュリティ認証情報セットとして、「アクセスキー」、「シークレットキー」、「セッショントークン」を発行。
・リクエストに応じてその都度動的に作成される(AWSIDを発行しない)ため、一時的でユーザーに紐づかない。
(IDフェデレーション)
Organization

【組織管理】
アカウントの作成・複数アカウントに適用するポリシーを管理できる。マスターアカウントを使用して、組織で使用したAWSの費用を統合して支払うことができる。
グループを作成し、そのグループに対して、アクセス制御OU(組織単位) や SCP(サービスコントロールポリシー)を適応することでサービスへの使用を制限する。ただし、OU単位でのポリシー作成は管理が複雑になるため、非効率。
・複数のアカウントでの料金を追跡し、コストと使用状況の統合データをダウンロードできる。
・APIから新規アカウントを作成・グループに追加を行い、すぐに使用管理できる。
(※従来はAWSのアカウントを作る際、カード番号の入力や電話認証などの対応が必要だった)
[一括請求にメンバーアカウントを追加する]
管理アカウントの所有者が、追加するアカウントへリクエストを送信する。
[リソース共有]
アカウントがOrganizationsによって管理されている場合、それを活用すればリソースを共有しやすくなる。組織の有無にかかわらず、ユーザーは個々のアカウントとリソースを共有できる。
[遷移先ページ]
[Organizations で管理できる内容]
| 項目 | 説明 |
|---|---|
| アカウントの一元管理 | 複数の AWS アカウントを「組織」としてまとめ、グループ化(OU)できる |
| ポリシーの適用 | サービスコントロールポリシー(SCP)で、アカウントやOU単位に操作制限を設定可能 |
| 請求とコスト管理 | 組織全体の利用料金をまとめて請求し、コストを可視化・最適化できる |
| リソースの共有 | AWS RAM を使って、VPCやライセンスなどをアカウント間で共有可能 |
| 新規アカウントの作成 | 管理アカウントからメンバーアカウントを簡単に作成・招待できる |
| セキュリティと監査 | CloudTrail や Config を使って、全アカウントの操作履歴や設定を監視できる |
| アクセス制御の統合 | IAM Identity Center で、ユーザーやグループのアクセス権を一括管理できる |
●OU
SCPの制御をさらに細かくグループ分けして制御できる。
※管理アカウントは組織のルートアカウントであり、OUに含めることはできない
※OUにはデフォルトでFullAWSAccess SCP がアタッチされている
※異なる組織ユニット(OU)間でのアカウントの移動のみをサポートしている
●タグポリシー
組織のアカウント内のリソース間でタグを標準化できる。リソースのタグ付けの際に適用されるタグ付けルールを指定。Organizations で管理されるアカウント群に対し、タグのキーや値のルールを定義・適用できるポリシー。
IAM Identity Center

(※AWS SSOの後継サービス)
SSOが組織版に対応した感じ。すべての AWS アカウント とクラウドアプリケーションのためのシングルサインオンサービスを提供する。複数アカウントを運用している環境で各ユーザを集約管理し、各アカウントへの一元的なアクセスとユーザーアクセス許可を簡単に行えるようにするためのサービス。
※SSO:Single Sign ON
●アクセス権限(許可)セット
ポリシーの集合体。管理者定義のポリシーの集合であり、ユーザーおよびグループが持つアクセスレベルを定義する。
・権限セットは IAM Identity Center に保存され、1 つ以上にプロビジョニングできる。
・AWS アカウント複数のアクセス権限セットを 1 人のユーザーに割り当てることができる。
・特定のAWSアカウントに対するユーザーのアクセス許可が有効か判断するためにSSOで使用される。
[仕組み]
- AWS Directory Service を通じて Microsoft Active Directory に接続される。
- そのディレクトリのユーザーは、既存の Active Directory のユーザー名とパスワードを使用して、パーソナライズされた AWS ポータルにサインインできる。
- AWS アクセスポータルから、ユーザーは権限を持つすべての AWS アカウント およびクラウド アプリケーションにアクセスできる。
[参考]
[IdPとの関係性]
SSOとIdPは分離されているが、SSOプロバイダーがユーザーのログイン時にIdPでユーザーIDを確認するSSOのプロセスがある。
| ★旧SSOサービス:AWS SSO 【IdPを使った認証】 SSOトークンを発行して、1組の「ID・パスワード」による認証を1度行うだけで複数のサービスにログインできるようにする仕組み。 |
SCP
※サービスコントロールポリシー
組織のIAMユーザーとIAMロールで使用可能な最大アクセス許可を一元的に制御できる。しかし権限を付与するのではなく、OU(組織単位)内のIAMユーザーやIAMロールが実行できるアクションに対してアクセス許可ガードレールを定義、制限するものである。
※許可ではなく明示的な拒否を指定することで効果的に制限をかける仕組み。
上記より、アクセス許可を付与するにはIAMユーザーとIAMロールにアタッチされたアイデンティティベースのポリシーやアカウントリソースにアタッチされたリソースベースのポリシーなどのアクセスを制御するポリシーをアタッチすること。
[参考サイト]
[利用条件]
・機能セットの「すべての機能」が有効になっている組織でのみ使用できる。
[戦略]
| 拒否リスト (戦略) | アクションはデフォルトで許可され、禁止するサービスとアクションを指定できる。 ※戦略⇒許可しないアクセスを明示すること |
| 許可リスト (戦略) | アクションはデフォルトで禁止され、許可するサービスとアクションを指定できる。 ※戦略⇒許可するアクセスを明示すること |
※「FullAWSAccess」アカウントに対し、拒否形式(ブラックリスト形式)を設定する場合
「FullAWSAccess」にブラックリスト形式で特定の操作を拒否すると、対象リソースの操作が拒否されるものの、その他のリソースについては「FullAWSAccess」が維持された状態となる。
[アカウントの別組織への移動方法]
- 新しい開発組織の管理アカウントから Oranizations API の InviteAccountToOrganization オペレーションを呼びだして開発者アカウントに招待状を送信。
- 管理アカウントからOrganizations API の RemoveAccountFromOrganization オペレーションを使用して、古い組織から各開発者アカウントを削除。
- 各開発者に自分のアカウントにサインインして、新しい開発組織への参加確認をしてもらう。
機能セット
Organization には利用可能な2つの機能セットがある。
・すべての機能(おすすめ)
一括請求機能が含まれている。(デフォルト)サポートされているAWSサービスとの統合、組織管理ポリシーなど高度なアカウント管理機能が可能。
・一括請求機能
※Consolidated Billing
複数アカウントを親アカウントと子アカウントの関係性にして親アカウントが子アカウントの分もまとめて一括支払い(一本化)できるサービス。
・複数アカウントで無料枠を使用していても1アカウント分しか無料枠は適用されない。
・一括請求機能のレポートは指定されたS3バケットに受信するように設定する必要がある。
・対象のバケットは管理アカウントによって所有されるため、メンバーアカウントが所有するS3バケットに受信されることはない。
・一括請求は追加コストなしで提供される。
[割引の共有]
全アカウントの利用料にボリューム割引が適用される。料金のボリューム割引、リザーブドインスタンスの割引、 Savings Plans を共有できる。(会社、部門、またはプロジェクトでの料金が個々のスタンドアロンアカウントと比較して低くなる)
アクセス周り
・aws:PrincipalOrgID
グローバル条件キー。指定する組織に属するアカウントのみアクセスできるように設定できる。組織内のすべてのAWSアカウントのアカウントリストIDリストのように扱える。
効率よく組織内のAWSアカウントに関連付けられたIAM プリンシパル (ユーザーとロール) のみにリソースのアクセス制限を実行できる。


認証・認可サービス
[認証・認可の違い]
- 認証:その人が誰であるかを判別すること。
- 認可:その人が何を許可されているかを判別すること。
Cognito

【ユーザー検証】
AWSなどに構築した、Web・モバイルアプリケーションに認証・認可機能を提供するサービス。モバイルアプリなどに素早く簡単にユーザーのサインアップ/サインイン、アクセスコントロールの機能を追加できる。
・「認証」、「許可」、「ユーザ管理」をサポートしており、ユーザー名とパスワードを使用して直接サインインする方法もある
・ユーザーは Google、Facebook、Amazon、Apple などのIdp、および SAML ベースの ID プロバイダー経由でユーザープールに認証、サインインすることもできる
・開発者が更新された同期されたデータとしてイベントを受信できるようにKinesisストリームを設定できる
●Decode Authorization Message
エンコードされたエラーメッセージのデコードに役立つ。
ユーザープール
認証機能。アクセスできる認証トークン発行窓口。サインアップおよびサインインサービス。
ユーザーディレクトリとユーザープロファイルを管理する。
- ユーザープールにユーザーが作成されると、Cognitoが一意のIDを割り振る。
- IDトークン(JSON Web トークン (JWT) を発行し、IDプールへつなげる。
●ユーザーディレクトリ
認証情報保存。アプリ内部の領域でありIDやパスワードの認証情報を保存し、その情報を利用してアプリの「認証(アイデンティティの検証)」を行う。
IDプール
認可機能。認証トークンに対して一時的な権限(Credetials=認可トークン)を発行する。
外部のIDプロバイダーによって認証されたIDに対して、STSと連携し、AWSへのアクセス権限(認可トークン)を払い出す。
※事前にIAMロールとSTSの紐づけが必要になる
・Webアプリケーションなどを想定し、認証されていないゲストユーザーにも一部のアクセス権を付与できる機能を持つ。
・フロントエンドからの各種 AWS サービスへのリクエストに、認可を提供することが可能。
[Credentials の実体]
IDプール に事前に設定された IAM ロール を、AWS STS がユーザーのリクエスト毎に発行するIAMロールと同等の権限を持った一時的な認証情報を指す。
[ID プールがサポートする ID プロバイダー]
| パブリックプロバイダー:Login with Amazon(ID プール)、Facebook(ID プール)、Google(ID プール)、Apple でサインイン(ID プール) |
| Cognito ユーザープール |
| Open ID Connect プロバイダー (ID プール) |
| SAML ID プロバイダー (ID プール) |
| デベロッパーが認証したアイデンティティ (ID プール) |
[Cognito ワークフロー]
- ユーザーにパスワード、Emailを入力させてCognitoへリクエスト。
- ユーザープールトークン(認証トークン)を取得。
- ユーザープールトークンをIDプールトークン(認可トークン)と交換。
- 認証もしくは認可トークンをヘッダーに設定しAWSの各サービスへリクエスト。
| ★SSOとCognitoの違い ●SSO:一度ユーザーを識別すると、その後アクセスできるようになる ●Cognito:アクセス要求を検証し、検証済みのユーザーのみを許可する ➡安全性の違いとして、Cognitoの方が良い [参考サイト] |
その他 Cognito機能
| プッシュ 機能通知 | 自動的にIDとデバイス間の関連付けを追跡する。 IDデータが変更された時、特定のIDのすべてのインスタンスにプッシュ通知をする。 また、特定のIDの同期ストアデータが変更されるたびに、そのIDに関連付けられているすべてのデバイスが通知を受け取る |
| Cognito ストリーム | すべてのSyncデータをKinesisに移動して、分析するためにDWHにストリーミング処理ができる |
| Cognito Sync | 認証したデータを共有することができるようになる。ログインしたユーザーデータやアプリケーションデータを複数のデバイス間で共有することができる機能を提供 |
| Cognito イベント | Cognitoにおける重要なイベントに応じてLambda関数を実行できる |
| Cognito コールバック | データセットの同期に関するアクティビティのコールバックイベントを処理する |
ACM

【認証局】(AWS Certificate Manager)
AWS自身が認証局となり、AWSサービスとユーザーの内部接続リソースで使用するパブリックまたはプライベートのSSL/TLS 証明書を作成・登録・集中管理できる。
・無料
・有効期限は13か月で自動更新される
・SHA-256のSSL/TLSサーバ証明書の作成・管理を行う
・SSL/TLS 証明書の購入、アップロード、更新プロセスを手動で行う必要がなくなる
[認証・証明情報の格納場所]
以下2つはどちらもSSL/TLS通信で使われるが、役割が異なる。
| トラストストア (信頼ストア) | 信頼できる証明書(主にサーバー証明書)を格納され、証明書の検証に使用される。信頼できる認証局(CA)の証明書を格納したデータベース。 ※これらの証明書は CA ルート証明書、つまり自己署名付き証明書を指す |
| キーストア | 自身の公開鍵と秘密鍵を格納し、サーバー認証やクライアント認証に使用される。非公開鍵と関連する証明書、または非公開鍵と関連する証明書チェーンを含むデータベースから成る。証明書チェーンは、クライアント証明書と、1 つ以上の証明書発行局 (CA) の証明書から成る。 |
DNS検証
このデータベースに追加する必要がある 1 つ以上の CNAME レコードが ACM から提供される。
これらのレコードには、ドメインを制御する証拠となる一意のキーと値のペアが含まれている。
| 項目 | パブリック証明書 | プライベート証明書 |
| 発行元 | 公に認められた認証局 | 企業や組織が独自に構築した認証局 |
| 信頼性 | ウェブブラウザやOSがデフォルトで信頼 | 信頼されるルート証明書 |
| 利用範囲 | インターネット | 企業内や組織内など限定された範囲 |
| 費用 | 有料 | 費用は低く抑えられている場合が多いが高め |
| 本人確認 | 厳格な審査基準 | 厳格な審査基準は設けられていない |
| 補足事項 | ・ACMはエクスポートできない | ・ブラウザにルート証明書をインストールする必要がある |
インターネットからアクセスするようなサービスの場合は、パブリック証明書で、組織内などのプライベートネットワークの場合は、プライベート証明書という使い分け。
[引用サイト]
リソースの共有
クロスアカウントアクセス
単発共有機能。複数のAWSアカウント間のリソースを一つのIAMユーザーで操作したい時に利用する。
設定にはIAMロールを使用する。
[設定の流れ]
アクセスを許可したいアカウントがIAMロールを作成する。
アクセスさせたいIAMユーザーにロールのアクセス許可をする。
Resource Access Manager

【複数共有】※RAM:Resource Access Manager
所有する特定のリソースを他の AWS アカウントまたはAWS 組織内で簡単かつ安全に共有できる。複数のアカウント間で様々な種類のAWSリソースを共有するための一環としたエクスペリエンスを提供する種中型サービス。
Transit Gateway、サブネット、AWS License Manager の設定、Amazon Route 53 リゾルバーのルールのリソースを RAM で共有できる。
・複数組織では管理や請求の分離を行い、エラーの影響を制限するために複数のアカウントを使用。
連携サービス
| Transit Gateway | ネットワークやリソースの管理を一元化し、拡張性と管理の効率性を向上させる。 |
| Organizations | 複数のアカウントがOrganizationsで管理されている場合、以下よりユーザーは個々のアカウントにリソースを共有できる。 ①RAMコンソールまたはAWS CLIよりOrganizationsのリソース共有を有効にする ②上記、組織内でリソース共有を有効にすると、RAMが以下ロールを作成する。 →AWSServiceRoleForResourceAccessManager ③上記ロールはRAMのみが引き受けることができる。 |




