モーダルを閉じる工作HardwareHub ロゴ画像

工作HardwareHubは、ロボット工作や電子工作に関する情報やモノが行き交うコミュニティサイトです。さらに詳しく

利用規約プライバシーポリシー に同意したうえでログインしてください。

目次目次を開く/閉じる

AWS 落穂拾い (Identity & Federation)

モーダルを閉じる

ステッカーを選択してください

お支払い手続きへ
モーダルを閉じる

お支払い内容をご確認ください

購入商品
」ステッカーの表示権
メッセージ
料金
(税込)
決済方法
GooglePayマーク
決済プラットフォーム
確認事項

利用規約をご確認のうえお支払いください

※カード情報はGoogleアカウント内に保存されます。本サイトやStripeには保存されません

※記事の執筆者は購入者のユーザー名を知ることができます

※購入後のキャンセルはできません

作成日作成日
2022/07/07
最終更新最終更新
2024/12/10
記事区分記事区分
一般公開

目次

    サーバーレスとDevOpsに注力中。AWSを使った効率的なインフラ構築が得意です。

    Access Advisor と Access Analyzer

    最小権限の原則に関連する、名称が似た機能です。

    Access Advisor

    IAM 権限について、使用状況を確認できます。

    Viewing last accessed information for IAM

    Access Analyzer

    アカウントまたは組織の外部に共有されているリソースを調査できます。CloudTrail ログから policy を生成したり、IAM Policy の文法エラーをチェックする機能も提供します。

    Using AWS IAM Access Analyzer

    NotAction と Deny

    Effect: Deny に指定した Action を、後から Allow し直すことはできません。

    このような場合は、Effect: AllowNotAction を組み合わせます。まず、NotAction に指定されていない Action すべてに Allow が適用されます。次に、Effect: AllowAction を指定することで、NotAction に含まれる Action の一部に Allow を適用できます。

    注意: iam:* 以外の Action も Allow されています。

    Policies Conditions

    • 複数の value を返す key に対しては ForAllValues または ForAnyValue を適用します。
      • aws:TagKeys で tag の存在確認。
      • aws:RequestTag で tag の値を確認。
    • Null Condition や Bool Condition について。
    • XxxIfExists で指定された key が存在しない場合、その key に関する評価は true となります。

    Permissions boundaries

    IAM role または IAM user に設定します。IAM group には設定できません。

    IAM role または IAM user が持つことができる権限に制限を設けるための仕組みです。

    Permissions boundaries for IAM entities

    AdministratorAccess

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "*",
                "Resource": "*"
            }
        ]
    }
    

    Permissions boundary として、mytest20220710 IAM policy を設定してみます。S3 の API 以外を Allow しています。

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "NotAction": [
                    "s3:*"
                ],
                "Resource": "*"
            }
        ]
    }
    

    S3 API は Access Denied で失敗します。

    vagrant@debian11:~$ aws s3 ls
    An error occurred (AccessDenied) when calling the ListBuckets operation: Access Denied
    
    vagrant@debian11:~$ aws s3 ls s3://mytest20220710
    An error occurred (AccessDenied) when calling the ListObjectsV2 operation: Access Denied
    

    ただし Resource Based policy を設定すると、一部の API は成功するようになります。

    S3 バケットポリシー

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "AWS": "arn:aws:iam::123412341234:user/test20220710"
                },
                "Action": "*",
                "Resource": [
                    "arn:aws:s3:::mytest20220710",
                    "arn:aws:s3:::mytest20220710/*"
                ]
            }
        ]
    }
    

    実行例

    vagrant@debian11:~$ aws s3 ls s3://mytest20220710 && echo ok
    ok
    

    上記ベン図は、以下の評価ルールが適用された結果です。

    • Resource-based policy は permissions boundaries よりも先に評価されるため、Resource-based policy で Allow されている場合は、permissions boundaries によらず Allow 判定となります。
    • Resource-based policy は Organization SCP よりも後に評価されるため、Organization SCP で Allow されていないと Resource-based policy によらず Deny 判定となります。

    注意: 別の AWS アカウントからのアクセスが Allow されるためには、別の AWS アカウント側でも Allow 判定となる必要があります。Cross-account policy evaluation logic

    STS (Security Token Service)

    API エンドポイント

    https://sts.amazonaws.com

    得られた情報は以下のように利用できます。

    export AWS_ACCESS_KEY_ID=ASIAIOSFODNN7EXAMPLE
    export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
    export AWS_SESSION_TOKEN=AQoDYXdzEJr...<remainder of session token>
    

    GetSessionToken API

    IAM user の session を作成します。主な用途は、AWS API 実行時に MFA が必須となる場合です。session 発行時に MFA の情報を与えることで、MFA 認証が完了した session を作成できます。

    aws sts get-session-token \
    --serial-number "YourMFADeviceSerialNumber" \
    --token-code 123456
    

    MFA を持つ session の例

    MFA が完了していないと sts:GetSessionToken 以外すべて Deny される policy を IAM user に設定する例です。

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "*",
                "Resource": "*"
            },
            {
                "Effect": "Deny",
                "NotAction": [
                    "sts:GetSessionToken"
                ],
                "Resource": "*",
                "Condition": {
                    "BoolIfExists": {
                        "aws:MultiFactorAuthPresent": "false",
                        "aws:ViaAWSService": "false"
                    }
                }
            }
        ]
    }
    

    AssumeRole API

    IAM role の session を作成します。session 発行時に MFA の情報を与えることで、MFA 認証が完了した session を作成できます。

    MFA を持つ session の例

    MFA が完了していないと Assume できない Trust relationships を持つ role を作成する例です。
    また、AssumeRole の合言葉のように機能する sts:ExternalId を設定する例です。

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "AWS": "arn:aws:iam::123412341234:root"
                },
                "Action": "sts:AssumeRole",
                "Condition": {
                    "StringEquals": {
                        "sts:ExternalId": "testtest"
                    },
                    "Bool": {
                        "aws:MultiFactorAuthPresent": "true"
                    }
                }
            }
        ]
    }
    

    注意: 上記 root は authenticated and authorized principals in the account を意味します。

    AssumeRole で STS トークンを発行する例

    aws sts assume-role \
    --role-arn arn:aws:iam::123412341234:role/myrole20220712 \
    --role-session-name mysession \
    --external-id testtest \
    --serial-number arn:aws:iam::123412341234:mfa/myuser \
    --token-code 123456
    

    STS トークンを利用する例

    AWS_ACCESS_KEY_ID="ASIA3JUBRISFQ67ZBL5Y" \
    AWS_SECRET_ACCESS_KEY="lV6JbMYBGqb3PFnbWmrh+GV1P5QkK4k9fWtBifC1" \
    AWS_SESSION_TOKEN="xxxxxx" \
    aws sts get-caller-identity
    
    {
        "UserId": "AROA3JUBRISFXZSIQ7UZB:mysession",
        "Account": "123412341234",
        "Arn": "arn:aws:sts::123412341234:assumed-role/myrole20220712/mysession"
    }
    

    AWS Organizations

    AWS Organizations terminology and concepts

    SCP を含め、Organization 内の policy は CLI または以下のコンソール画面から設定します。

    • Backup policies
      • AWS Backup を組織内の account に提供するための policy です。
    • AI services opt-out policies
      • AI サービス (例: Amazon Comprehend) を利用する際のデータが訓練データとして利用されることを optout できます。
    • Tag policies
      • 組織内 tag を標準化するための policy です。

    Active Directory (AD) Connector

    AWS SSO

    AWS IAM Identity Center

    2022/7/26 頃から、AWS SSO の正式名称が AWS IAM Identity Center に変更されました。基本的な機能に変更はありません。
    AWS Single Sign-On (AWS SSO) is now AWS IAM Identity Center

    AssumeRoleWithSAML API

    例: Google Cloud Identity は SAML に対応した IdP の一つです。STS の AssumeRoleWithSAML API を利用した認証が可能です。

    How to set up IAM federation using Google Workspace

    AWS SSO による SAML 認証の隠蔽

    例: Google Cloud Identity は SAML に対応した IdP の一つです。SSO User ポータルを登場させることで、AssumeRoleWithSAML API の処理を AWS 内に隠蔽することができます。可能な限り、AssumeRoleWithSAML ではなく、後継の AWS SSO を利用します。

    How to use G Suite as an external identity provider for AWS SSO

    AWS SSO は Organization と併用する必要があり、management account で有効化します。

    リージョンは一つだけ選択できます。

    AssumeRoleWithWebIdentity API

    OpenID Connect (OIDC) は Security Assertion Markup Language (SAML) と似た仕組みですが、OAuth2.0 を拡張しており、ユーザ自身が自分でユーザ登録が可能な、Web ベースの IdP で利用されているプロトコルです。AssumeRoleWithSAML は組織内の従業員が利用するのに対して、AssumeRoleWithWebIdentity は不特定多数の利用者がインターネット経由で利用することを想定します。

    accounts.google.com:sub といった変数を IAM policy で利用できます。IAM and AWS STS condition context keys

    Amazon Cognito

    OIDC と SAML の両方に対応しており、可能な限り、AssumeRoleWithWebIdentity ではなく、後継の Cognito を利用するようにします。Amazon Cognito は、不特定多数のユーザに対する Web 認証機能を実装するためのマネージドサービスです。Google Cloud における Identity Platform に対応します。

    cognito-identity.amazonaws.com:sub といった変数を IAM policy で利用できます。IAM and AWS STS condition context keys

    GetFederationToken API

    SAML に対応していない、オンプレミス上の ID 基盤を利用する際に利用します。STS GetFederationToken API を直接実行する custom identity broker を用意します。

    Control Tower

    • AWS Organization による複数アカウント管理のベストプラクティスを適用するための仕組みです。
    • Account Factory
      • 新規アカウント作成時に AWS Service Catalog を利用してプロビジョニングします。
    • Guardrails
      • 内部的に SCP を適用してポリシーを強制します。(Preventive 予防的)
      • AWS Config によって、不正なイベントを検知します。(Detective 発見的)
        • SNS でアカウント管理者に通知。
        • Lambda を起動してイベントで検知された状態を修復。(Remediation)

    Resource Access Manager

    • 組織内外の別の AWS Account とリソースを共有する機能です。
    • 冗長なリソース作成を回避できます。
    • 例えば、複数アカウントの VPC を一つの Transit Gateway にアタッチする際に利用されます
    • IAM resource based policy レベルで共有するのではなく、上位の Account レベルで共有します。
    Likeボタン(off)0
    詳細設定を開く/閉じる
    アカウント プロフィール画像

    サーバーレスとDevOpsに注力中。AWSを使った効率的なインフラ構築が得意です。

    記事の執筆者にステッカーを贈る

    有益な情報に対するお礼として、またはコメント欄における質問への返答に対するお礼として、 記事の読者は、執筆者に有料のステッカーを贈ることができます。

    >>さらに詳しくステッカーを贈る
    ステッカーを贈る コンセプト画像

    Feedbacks

    Feedbacks コンセプト画像

      ログインするとコメントを投稿できます。

      ログインする

      関連記事

      • AWS EC2 インスタンスの選定方法
        準仮想化と完全仮想化 AWS のインスタンスタイプが準仮想化と完全仮想化のどちらの仮想化技術を採用したハードウェアであるかによって、使用できる AMI (OS) が異なるのは以下の理由によります。 準仮想化 ParaVirtualization (PV) において OS は自分が仮想化用のハードウェア上で動作していることを知っています。つまり仮想化用にカスタマイズされた専用の OS が必要になりま...
        yuki_coderyuki_coder8/30/2017に更新
        いいねアイコン画像0
      • OpenVPN で二つの VPC をつなぐための設定
        インターネット VPN (Virtual Private Network) には二拠点間の通信を暗号化する方式によって IPsec-VPN や SSL-VPN などがあります。OpenVPN は SSL-VPN の実装のひとつです。AWS VPC を二つ用意してそれらを OpenVPN で接続してみます。 VPC の構成 myvpc-1 (10.1.0.0/16) mysubnet-1-1 (10...
        takuyatakuya8/11/2017に更新
        いいねアイコン画像0
      • Windows Server EC2 インスタンスへの CAL インストール
        サムネイル画像-8bae43ea3b
        Windows サーバを AWS EC2 インスタンスとして起動した後は、RDP 接続が必要となります。RDP 接続を行なうためには Remote Desktop Services (RDS) ライセンスが必要となります。 Windows Server のライセンスは、管理用途の RDS 接続を許可しています。その際に RDS ライセンスは不要です。ただし、[同時接続数が 2 という制限があります...
        けんちゃんけんちゃん11/18/2023に更新
        いいねアイコン画像0
      • AWS Lambda の基本的な使い方
        サムネイル画像-9285163f6b
        AWS Lambda はイベントドリブンな「関数」を登録できるサービスです。例えば S3 に画像がアップロードされたときにサムネイル用のサイズに加工する処理が記述された関数を登録できます。基本的な使い方をまとめます。 事前準備 関数の登録はブラウザで AWS コンソールにログインして行うこともできますが、本ページでは AWS C
        yuki_coderyuki_coder1/18/2020に更新
        いいねアイコン画像0
      • AWS 落穂拾い (Data Engineering)
        Kinesis Kinesis Streams データは 3 AZ にレプリケーションされます。Amazon Kinesis Data Streams FAQs 24 時間 (既定値) から 1 年までデータ保持できます。[Changing the Data Retention Period](https://docs.aws.amazon
        yuki_coderyuki_coder12/22/2024に更新
        いいねアイコン画像0