type
status
date
slug
summary
tags
category
icon
password
书籍
理論

1. AWS Organizationsとサービス制御ポリシー(SCP)
- AWS Organizations を使用すると、複数のアカウントを管理できます。アカウントを 組織単位(OU) に分けて、それぞれに対して サービス制御ポリシー(SCP) を適用できます。
- SCPは、アカウント内で実行できるアクションを制限するもので、アカウント単位またはOU単位で権限を設定できます。しかし、細かいリソースレベルでのアクセス制御には適していません。
2. IAMポリシーとリソースレベルアクセス制御
- IAMポリシー は、ユーザーやロールに対してリソースへのアクセスを制御するための最も基本的な方法です。ポリシーでは 条件付きアクセス を設定でき、リソースタグを使用することで、より細かい制御が可能です。
- たとえば、特定のタグ(例:
DevelopmentUnit
)をリソースに設定し、ユーザーやロールがそのタグに基づいてリソースを操作できるようにすることができます。
3. AWS STS(Security Token Service)とセッションタグ
- AWS STS を使用して、一時的なセキュリティ認証情報(セッショントークン)を提供することができます。この認証情報に セッションタグ を付与し、ユーザーが認証される際にそのタグ情報を付加できます。
- セッションタグを使用することで、IAMポリシーやリソースタグと連携し、ユーザーの権限を 動的に設定 することができます。この方法は、特に 一時的な認証 を管理する場合に役立ちます。
4. タグによるリソース管理
- AWSでは、リソースに タグ を付与することができ、これを基にアクセス制御を行うことが可能です。リソースタグは、開発環境や運用環境、さらには特定の開発ユニットやプロジェクトに基づいて、リソースを分類・識別するために役立ちます。
- IAMポリシー内で、リソースタグに基づいてアクセス制御を行うために StringEquals や StringNotEquals 条件を使用します。
5. 細粒度のアクセス制御とセキュリティ
- 細粒度のアクセス制御 は、リソース単位でアクセスを制限することで、誤操作やセキュリティリスクを最小化するために重要です。タグやSTSセッションタグを使って、リソースごとに異なるアクセス権限を設定することで、必要最小限のアクセス権限だけを付与できます。
- 最小権限の原則(Principle of Least Privilege)を守るために、アクセス制御を細かく設定し、不要な権限を与えないようにすることが推奨されます。
まとめ
- SCP は組織全体の制御に適しており、リソースレベルのアクセス制御には IAMポリシー と タグ を活用することが重要です。
- AWS STSセッションタグ を利用することで、開発ユニットごとのアクセスを柔軟に管理できます。これにより、ユーザーが自分の開発ユニットに関連するリソースのみを操作することができます。
実践
略
一問道場
質問 #385
ある会社がAWSクラウドで複数のワークロードを実行しています。この会社にはソフトウェア開発用の別々のユニットがあり、AWS OrganizationsとSAMLによるフェデレーションを使用して、開発者にAWSアカウント内のリソース管理権限を付与しています。各開発ユニットは、共通のプロダクションアカウントにプロダクションワークロードをデプロイしています。
最近、プロダクションアカウントでインシデントが発生し、ある開発ユニットのメンバーが別の開発ユニットに所属するEC2インスタンスを誤って終了させました。ソリューションアーキテクトは、今後同様のインシデントが発生しないようにする解決策を作成しなければなりません。この解決策は、開発者が自分のワークロードで使用するインスタンスを管理できるようにもする必要があります。
どの戦略がこれらの要件を満たしますか?
A. AWS Organizationsで各開発ユニットのために別々のOU(組織単位)を作成します。作成したOUを会社のAWSアカウントに割り当てます。開発ユニット名に一致するDevelopmentUnitリソースタグに対して、拒否アクションとStringNotEquals条件を含むSCP(サービスコントロールポリシー)を作成します。対応するOUにSCPを割り当てます。
B. SAMLフェデレーション中にAWS Security Token Service(AWS STS)セッショントークンとしてDevelopmentUnit属性を渡します。開発者のIAMロールのポリシーを更新し、DevelopmentUnitリソースタグとaws:PrincipalTag/DevelopmentUnitに対して、拒否アクションとStringNotEquals条件を設定します。
C. SAMLフェデレーション中にAWS Security Token Service(AWS STS)セッショントークンとしてDevelopmentUnit属性を渡します。開発ユニットリソースタグとaws:PrincipalTag/DevelopmentUnitに対して、許可アクションとStringEquals条件を含むSCPを作成します。このSCPをルートOUに割り当てます。
D. 各開発ユニットに対して別々のIAMポリシーを作成します。各IAMポリシーには、DevelopmentUnitリソースタグと開発ユニット名に対して許可アクションとStringEquals条件を追加します。SAMLフェデレーション中にAWS Security Token Service(AWS STS)を使用してIAMポリシーを割り当て、開発ユニット名をIAMロールに一致させます。
解説
この問題の解説について、どのようにして B選択肢 が正解となるかを詳しく説明します。
問題の背景と要求
会社は複数の開発ユニットがあり、それぞれが独立して作業を行っていますが、 共通の本番アカウント に対して EC2インスタンス などのリソースを操作しています。最近、ある開発ユニットのメンバーが 他の開発ユニットのEC2インスタンスを誤って終了させてしまった というインシデントが発生しました。
この問題を防ぐためには、以下の要件が求められています:
- 各開発ユニットは、 自分の作業に関連するリソースのみ を操作できるようにすること。
- それでも、開発者が自分のリソースを管理できる権限を持つようにすること。
解説
1. リソース間での誤操作を防ぐために
開発ユニット間でリソースの誤操作を防ぐためには、 リソースに対するアクセス制御 が必須です。それぞれの開発ユニットが自分のリソースだけにアクセスできるようにする必要があります。
2. SAML認証とSTSセッションタグの利用
開発者のアクセス制御を柔軟に行うために、 SAML認証 と AWS STSセッションタグ を利用するのが効果的です。これにより、開発者がシステムにアクセスする際、どの 開発ユニット に所属しているかを識別できます。この情報を元に、リソースのアクセス制御を行います。
3. IAMポリシーの利用
次に、IAMポリシー を用いて、開発者が操作できるリソースを制限します。具体的には、 StringNotEquals 条件を使って、開発者が 自分の開発ユニットのリソースだけ にアクセスできるようにします。リソースのタグと開発者のセッションタグが一致しない場合、アクセスが拒否される仕組みです。
各選択肢の評価
A選択肢:SCPを使ったリソースのアクセス制御
- 概要:AWS Organizationsの サービス制御ポリシー(SCP) を使い、開発ユニットごとにOU(組織単位)を分け、リソースへのアクセスを制限します。
- 問題点:SCPは主に組織全体のポリシー管理に使用されるため、 細かいリソース単位でのアクセス制御 には不向きです。タグを使って個別のアクセス制御を行う柔軟性がありません。
B選択肢:STSセッションタグとIAMポリシー
- 概要:SAML認証でSTSセッションタグを使い、開発者の所属する開発ユニットを識別。その情報を基にIAMポリシーでリソースへのアクセスを制御します。
- 正解理由:この方法は リソースタグとセッションタグを照合 し、 アクセスできるリソースを明確に制限 できます。これにより、開発者は自分のユニットのリソースのみ操作可能になり、他の開発ユニットのリソースを誤って操作することを防げます。
C選択肢:SCPを使ったタグによるアクセス制御
- 概要:SCPを使って、開発ユニットに合わせたアクセス許可を設定します。条件として、タグとセッションタグを照合します。
- 問題点:SCPは アクセスを許可 する条件で設定されているため、誤って他のユニットのリソースにアクセスできてしまう可能性があります。誤操作を防ぐためには 明示的な拒否 の方が安全です。
D選択肢:IAMポリシーを使ったアクセス制御
- 概要:開発ユニットごとに個別のIAMポリシーを作成し、それをSAML認証を通じて適用します。
- 問題点:IAMポリシーを各ユニットごとに作成するのは 管理が複雑 で、運用の負担が大きくなります。リソースの管理やポリシーの更新が増えるため、スケーラビリティに欠けます。
結論
B選択肢 は、 SAML認証 と STSセッションタグ を活用し、開発者が自分の開発ユニットに関連するリソースのみ操作できるようにする方法です。このアプローチは、リソースレベルでアクセス制御を 柔軟 に行うことができ、誤操作を防ぐために非常に効果的です。他の選択肢は、管理の複雑さやアクセス制御の精度において不十分であるため、B選択肢が最適 となります。
AWS STS(Security Token Service)とセッションタグを使う理由は、アクセス権限を一時的かつ柔軟に管理できるためです。特に削除防止には、動的に権限を変更できる点が重要です。
- STSとセッションタグ:
- 一時的なアクセス制御: 特定の時間や状況でのみアクセスを許可。
- タグによる制御: ユーザーにタグを付与して、どのリソースにアクセスできるかを動的に決める。
- IAMポリシーとリソースレベルアクセス制御:
- 静的な設定: 一度設定したら変更が必要な場合が多く、動的な権限変更には不向き。
簡単に言うと、STSとセッションタグは、一時的かつ柔軟なアクセス管理が可能で、特に削除防止には有効です。
- 作者:みなみ
- 链接:https://www.minami.ac.cn//%E8%B3%87%E6%A0%BC%E5%8B%89%E5%BC%B7/178d7ae8-88e2-8064-bbd0-c62a47b9a033
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章