IAM
IAMポリシー
JSON形式で記述されたアクセス権限の設定のこと。
Effectは制御方法で、"Allow", "Deny"のみ。
Actionは対象の操作
Resourceは対象のAWSリソース
Conditionはアクセス制御が有効となる条件
IAMユーザ、IAMグループ、IAMロールに設定可能
実例
アカウント種類
通常、以下のようなアカウント階層で運用する。
ルートアカウント ... すべてのサービスとリソースの使用権原を有する。日常的には使わない。
管理者権限(IAMユーザー) ... AdministratorAccessが許可されたIAMユーザー。IAMの操作も可能。
パワーユーザー(IAMユーザー) ... PowerUserAccessのIAMユーザー。IAM以外のすべてのAWSサービスにアクセス権限を持つ。IAMは操作できない。
ルートアカウントのみの権限
ルートアカウントのメアド、パスワード変更
IAMユーザーの課金情報へのアクセス権のactivate/deactivate
DNS関連
他AWSアカウントへのRoute53のドメイン登録の移行
逆引きDNS申請
AWSサポート等のキャンセル
AWSアカウントの停止
一括請求(コンソリデーティッドビリング)の設定
脆弱性診断フォームの提出
IAMエンティティの種類
IAMユーザー
IAMグループ
組織単位でIAMポリシーを設定可能となる。
IAMロール
AWSリソースに対してアクセス権限をロールとして付与できる。
また、アカウントの外部アクセスにも付与できる。(別のAWSアカウントなど)
IAMポリシーのタイプ
ユーザーベースのポリシー
管理ポリシー、インラインポリシーをIAMエンティティ(IAMユーザー、グループ、ロール)にアタッチする。
ユーザーベースのポリシーでは、アクセス許可はIAMエンティティに付与される。
リソースベースのポリシー
バケットポリシーなどのJSON形式で定義されたインラインポリシーをリソースにアタッチする方式。
リソース自体が固有のポリシーを持っているケースはこれ。
S3バケットポリシーやIAMロールの信頼ポリシーなど。
他には、SNSのTopicポリシーやVPCエンドポイントポリシーなどあるようだ。
詳細は下記。
https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html
アクセス許可の境界
ユーザーベースのポリシーがIAMエンティティに付与できる許可の上限を設定する機能
アクセス許可を付与することはできない。
ユーザーベースの様々なポリシー種類
管理ポリシー
AWS管理ポリシーは、AWSがすでに準備しているポリシーである。
カスタマー管理ポリシーは、AWSアカウントが作成・管理する管理ポリシーであり、同じポリシーを複数のIAMエンティティにアタッチできる。
ポリシーの変更時は、アタッチ済みのすべてのエンティティに変更が反映され、バーしょん管理も可能。
インラインポリシー
1つのプリンシパルエンティティに埋め込まれた固有のポリシー。
ポリシー単体では存在できず、いずれか1つのエンティティにアタッチされる。
意図しないアクセス権の変更が行われたくない場合に使用するが、基本的には、管理ポリシーの使用が推奨。
IAMロールの信頼ポリシー
一時的な権限移譲操作に特化したポリシー。
具体例としては、監査人に一時的に監査ログへのアクセス権を付与したい場合など。
以下に具体的な例がある。
https://dev.classmethod.jp/articles/iam-role-externalid/
この例では以下のような手順で使用される。
私のAWSアカウントで外部(Example Corp.)向けのIAMロールを作成し、IAMロールのARNをExample Corp.に伝える。
このIAMロールは、信頼されたエンティティに、Example Corp.のAWSアカウントを指定しておく。 これにより、Example Corp.以外がAssumeRoleすることはできない。
Example Corop.は、このARNを使用してAssumeRoleし、私のAWSアカウントのリソースにアクセスが可能となる。
ちなみにこの例では、外部IDというものをConditionに使い、ARNが漏洩した場合に、第3者に、Example Corp.のSaaSを介して、 不正アクセスされないようにするため、という理由を説明している。
IAMユーザを一時的に作成し、削除するという使い方でも一時的な権限移譲はできるが、 IAMユーザ作成は基本永続的な対応に使用されるため、信頼ポリシーを使うことが推奨される。
SaaSによっては、IAMロールではなくアクセスキーしか対応してない場合のあり得る。
IAMの認証方式
アクセスキーIDとシークレットアクセスキー
EC2インスタンス接続などのREST、AWS CLI、APIを使用した認証で使用。
X.509 Certificate
SOAP形式のAPIリクエスト向けの認証方式。
SOAPはRESTより歴史が古く、より厳格な標準化の元管理され、XMLでのメッセージングを行う。
AWSマネジメントコンソールへのログインパスワード
デフォルトは未設定
MFA(多要素認証)
推奨されているピンコード等での認証方式
アクティビティの記録方法
IAMアクセスアナライザー
外部アカウント(エンティティ)と共有しているS3やIAMロールを分析し、意図しないアクセスをリスクとして特定
Access AdvisorのService Last Accessed Data
IAMエンティティが最後にAWSサービスにアクセスした日付と時刻を表示する機能
Credential Report
IAM認証情報の詳細なレポートを取得できる。
AWS Config
IAMのユーザ、グループ、ロール、ポリシーの変更履歴を管理、確認できる機能
AWS CloudTrail
AWSインフラ全体のアカウントアクティビティをログに記録して監視できる機能。
その他のロギング機能としては以下も使用可能
Amazon CloudFront
ユーザーリクエストを記録できる。
Amazon S3
アクセスリクエストを記録できる。
Amazon CouldWatch
リソースとアプリケーションを監視し、定義したメトリクスに基づいてアラームを設定可能。
IAM権限のベストプラクティス
ルートアカウントのアクセスキーをロックし、ルートアカウントを使用しない。
個々のIAMユーザーを作成して、IAMユーザーで管理を行う。
IAMユーザーへのアクセス許可には、IAMグループを介して行う。
アクセス許可は最小権限のみを設定する。
カスタマー管理ポリシーよりも、AWS管理ポリシーを使用できないか検討する。
インラインポリシーよりも、カスタマー管理ポリシーを使用できないか検討する。
アクセスレベルを使用してIAMアクセス許可を確認する
ReadOnlyやFullAccessなど、適切なものをという意味。
強度の高いパスワードポリシーを設定する。
MFAを有効化する。
EC2インスタンスで実行するアプリケーションにはIAMロールを使用する。
EC2インスタンスにアクセスキーなどを配置せず、IAMロールを使って制御しろという意味と思われる。
アクセスキーが必要なのは、AWSの外部からアクセスする場合のみである。
第三者に一時的に認証を付与する場合はIAMロールを使用する。
IAMロールの信頼ポリシーを参照。
アクセスキーを共有しない。
認証情報は定期的にローテーションする。
不要な認証情報を削除する。
AWSアカウントのアクティビティを監視する。
アクティビティ記録方法を参照。
公式は以下の通り。
https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/best-practices.html
IAM機能の説明
Policy Simulator
IAMやOrganizationで、複数のポリシーを設定した場合に、うまく権限付与されているかを確認するツール。
OrganizationsにおけるSCPなどの他のポリシーに対しても使える。
Organizationsは複数のAWSアカウントを管理するサービス。
SCPはそのポリシーで、AWSアカウントのアクセスを制御する。 (IAMポリシーは、IAMエンティティのアクセスしか制御できないのでそこtが異なる。)
Web Identity Federation Playground
ID Federationを使って、SSOやオンプレのAD(Active Directory)と連携する場合がある。
その際のIdP(IDプロバイダ)での認証情報や一時的なtokenを取得するためのツール
IdP(IDプロバイダ)
Federation Accessを実現するもの。
ADというオンプレの認証の仕組みとIAMを連携し、統合管理できるようにする機能。
AWS外のユーザーIDを管理し、アクセス許可などを制御できる。
STS(Security Token Service)
一時的な認証情報を付与する機能.
アカウント設定から、リージョン毎のエンドポイントでの有効・無効を設定できる。
アクセスレポート
アクセスアナライザー
認証情報の分析、不正なアクセスなどを分析できる。
認証情報レポート
組織アクティビティ
Organizationsを使用している場合に使う。
Organizationsにおけるアクティビティを見ることが可能。
SCP
Organizationsを使用している場合に使う。
AWSアカウントのアクセス権をコントロールするポリシー。
ポリシーの作成例
開発グループ用
リソースで絞り込んで、アクションを選択する。VPC関連のアクションはなぜかEC2リソースの中にあるので、注意する。
EC2, ELB, AutoScaling, RDS, S3のサービスについて、すべてのアクション、すべてのリソースを許可してポリシーを作成。
AutoScalingなど、リソースを指定できないものもあり、その場合は勝手にすべてのリソースとなる。
運用グループ用
CouldWatch, CouldTrail, Configについて作成
ロールの作成の種類
ロールの種類として以下がある。
AWSサービス用
別のAWSアカウント用
ウェブID ... WebIDプロバイダを使ってFederationによって外部認証をする機能があり、それを使うCognito、STSなどの場合に使用。
SAML 2.0 Federation ... ADなどで使われる方式。ADと統合してIAMを使っていく場合に使用。
IAMロールの権限移譲
アカウントAでアカウントBへの権限移譲用IAMロールを設定
アカウントBで、権限移譲用IAMロールをポリシーとして設定
ポリシーの作成でJSONモードで作業
管理ポリシーのインポートによりAdministratorAccessを流用する。
以下のように編集。
ポリシーを、アカウントBのIAMユーザーに設定
IAMユーザーを利用してIAMロールをスイッチすることで、アカウントAにアクセスする。
Permissions boundary
IAMユーザーに対して権限境界を設定し、付与可能な権限範囲を制限できる。
例えば、IAMポリシーとPermissions boundaryの双方でアクセス権限がある場合、権限が有効となる。
形式は普通のIAMポリシーと変わらない。
Access Analyzer
analyzerをまず作成する必要がある。
アーカイブルールなどで、特定の条件にマッチしたらアーカイブすることができる。
AWS Organizations
複数のAWSアカウントを管理するもの。
IAMは一つのAWSアカウント内でユーザーなどを管理するものである。
マスターアカウントとメンバーアカウントの階層となる。
以下が実現できる
複数アカウントの一元管理
部署単位でOUにまとめて、そこに複数のメンバーアカウントをいれる。
OU単位でポリシーを管理
新規アカウント作成の自動化
複数アカウントの請求の一括化
Consolidated Billing Only
請求のみを一括する。ボリュームディスカウントを得られるためコストメリットがある。
All Feature
アカウント統制も含めてやりたい場合はこちら。
SCP
SCPというポリシーを利用して、OU内に権限境界を設定できる。
フォーマットはIAMポリシーと同じ。Sid, Effect, Action, Resouceなどを指定してアクセス権限を設定できる。
動作はPermissions boundaryと似ており、境界を与えるだけ。
設定しないデフォルトでは、制限のない状態となる。
AWS Organizationsの作成
Organizationsを作成すると、そのアカウントがmasterアカウントとなる。
組織IDが発行される。
メールアドレスの確認メールにより有効化される。
AWSアカウントを追加する。
新規作成と既存アカウントの招待の2パターンがある。
同様に確認メールとAcceptにより有効化される。
OUで階層構造化することができる。
AWS Organizationsで使用できるポリシー
SCP
説明済み
タグポリシー
組織内タグ付けのルールを標準化できる。(大文字小文字など)
バックアップポリシー
バックアップルールを標準化できる。
AIサービスのオプトアウトポリシー
AIサービスにAWSアカウント情報が使われないように制限するポリシー。
rekognitionやlexなどサービス毎にOptOut(使用されないようにする)、OptInを設定可能。
IAM参考
[AWS]管理ポリシーとインラインポリシーの違いが分からなかったので改めてIAMポリシーのお勉強をする
https://qiita.com/Batchi/items/a2dde3d2df27568cc078
セッションポリシーというものもあるらしい。
https://docs.aws.amazon.com/ja_jp/transfer/latest/userguide/session-policy.html
IAMポリシーとSCPの違い
https://aws.amazon.com/jp/premiumsupport/knowledge-center/iam-policy-service-control-policy/
Last updated