[レポート] Become an IAM Policy Master in 60 Minutes or Less #reinvent #SEC316

2018.11.27

はじめに

1時間でIAMポリシーマスタになれるセッション「SEC316 – Become an IAM Policy Master in 60 Minutes or Less」の参加レポートです。

セッション概要

Are you interested in becoming a IAM policy master and learning about powerful techniques for controlling access to AWS resources? If your answer is “yes,” this session is for you. Join us as we cover the different types of policies and describe how they work together to control access to resources in your account and across your AWS organization. We walk through use cases that help you delegate permission management to developers by demonstrating IAM permission boundaries. We take an in-depth look at controlling access to specific AWS regions using condition keys. Finally, we explain how to use tags to scale permissions management in your account. This session requires you to know the basics of IAM policies. Please join us for a speaker meet-and-greet following this session at the Speaker Lounge (ARIA East, Level 1, Willow Lounge). The meet-and-greet starts 15 minutes after the session and runs for half an hour.

アジェンダ

  • IAMポリシー言語の要約
  • ポリシーの種類とその連携方法
  • IAMポリシーDeepDive(ここがメイン)
    • ユースケース1 : アカウント間に許可ガードレールを設定する
    • ユースケース2 : 特定の地域へのリソースの作成を制御する
    • ユースケース3 : 開発者が安全にロールを作成できるようにする
    • ユースケース4 : タグを使用して権限管理を拡大する

IAMポリシー言語の要約

What are IAM policies?

IAMポリシーは2つのパートからなります。

  • アクセスポリシーの定義
  • ポリシーの評価

アクセスポリシーを定義するときはどのIAMプリンシパルどのAWSリソースに対してどのようなアクションを実行できるかを指定します。 IAMは、要求と定義したポリシーを評価してこのアクセスに対し「はい」または「いいえ」のいずれかの回答を返します。

IAM policy structure

IAMポリシーは4つの要素から形成されます。

  • Principal : アクセスを許可または拒否するエンティティ
  • Action : アクセスを許可または拒否するアクセスタイプ
  • Resource : アクションが作用するAWSリソース
  • Condition : 定義されたアクセスの条件

IAMポリシーDeepDive

あなたはセキュリティーチームのメンバーです。4つのユースケースに対応し適切なIAMポリシーを設定します。

ユースケース1 : アカウント間に許可ガードレールを設定する

シチュエーション

すべてのアカウントでAWS CloudTrailを設定しました。 あなたの会社はユーザに既存のアイデンティティプロバイダとの認証を要求します。

チャレンジ

開発者に対して以下の操作を無効にします。

  • CloudTrail無効化
  • IAMユーザーの作成
  • AWSディレクトリサービスの設定

回答

拒否したいアクションをActionに記載し、EffectDenyとします。

ユースケース2 : 特定の地域へのリソースの作成を制御する

シチュエーション

AWSでリソースを作成するために開発チームを信頼することができますが、あなたは承認されていない地域でリソースを作成することに懸念しています。

チャレンジ

開発者が承認された地域でのみリソースを作成できるようにする。

回答

Conditionでリソースの作成を許可するリージョンを定義します。参照系のアクションに対してはConditionの指定は行いません。

ユースケース3 : 開発者が安全にロールを作成できるようにする

シチュエーション

あなたの開発者は自分のものを知っています。彼らは中央のセキュリティチームを経由せずに自分のロールを作成できるならば、より迅速に構築できると言っています。

チャレンジ

開発者がIAMロールを作成してEC2とLambdaに渡すことがでるようにします。ただし、自分の権限を超えることはできません。

回答

これを満たすためには以下4つの操作が必要になります。

  • 管理ポリシの作成を許可する
  • 特定の許可境界を持つ場合のみ、ロールを作成できるようにする(既存の管理対象ポリシーへのポインタを持つ条件です)
  • 管理されたポリシーを添付できますが、特定の境界を持つ役割にのみ許可します
  • 命名要求を使用してこれらのロールに対してpassroleを許可する

ワークフローは以下のようになります。

ユースケース4 : タグを使用して権限管理を拡大する

シチュエーション

Unicornプロジェクトは2つのプロジェクトに分かれています。Dorky UnicornsとSneaky Unicornsです。彼らはまだアカウントを共有続けています。

チャレンジ

開発者がDorky UnicornsやSneaky Unicornsで作業できるようにするためにアクセス許可を更新します。

回答

タグベースアクセスコントロールにより実現します。

  • リソースの作成時にユーザーがタグを作成できるようにするが、ユーザーがリソースを作成するときには特定のタグが必要
  • 開発者がタグ付けできる既存のリソースと値を制御する
  • ユーザーがタグ値に基づいてリソースを管理する

リソースの作成時にユーザーがタグを作成できるようにする

ユーザーがリソースを作成するときには特定のタグを要求する

開発者がタグ付けできる既存のリソースと値を制御する

ユーザーがタグ値に基づいてリソースを管理する

まとめ

ユースケースを元にIAMポリシーの記述方法を学ぶセッションでした。セキュリティを高めるため細かなアクセス制御を実施する場合にはIAMポリシーの設定が必要になります。その際には本記事を参考にしていたけると幸いです。