ロールベースのアクセス制御にAmazon Web Servicesセッションタグを使用する

Amazon Web Services(AWS)セッションタグを使用すると、リソースにタグを付け、ユーザーにキーと値のペアを割り当てることができます。これにより、AWS APIとリソースにロールベースのアクセス制御(RBAC)を実装できます。

このガイドの例では、AWSリソースにAWSセッションタグをタグ付けし、AWS IAMロールのポリシーを作成します。これにより、このロールと適切なタグを持つユーザーがAWSリソースに対して特定のアクションを実行できるようになります。次に、Auth0でルールを作成し、AWS IAMロールと適切なAWSセッションタグをAuth0ユーザーに添付して、トークン内のSAMLアサーションを通じて渡します。この例は、Amazon Web Servicesをシングルサインオン用に構成するで提示されている例に基づいています。

AWS APIとリソースでAWSセッションタグを使用するには、次の操作を行います。

  1. AWSインスタンスにタグを付ける。

  2. 専用のAWS IAMロールを作成する。

  3. Auth0ルールを作成する。

  4. 構成をテストする。

前提条件

AWSインスタンスをタグ付けする

AWSリソースにタグを追加します。Amazon Elastic Compute CloudユーザーガイドのLinuxインスタンス個々のリソースへのタグの追加および削除のステップに従ってください。。

3つのインスタンスが作成されているはずです。次のタグを追加します。

インスタンス タグ
1 キー:CostCenter、値:marketing
キー:Project、値:website
2 キー:CostCenter、値:engineering
キー:Project、値:management_dashboard
3 キー:CostCenter、値:marketing
キー:Project、値:community_site

特殊なAWS IAMロールを作成する

前提条件中に設定したAWS SAML IDプロバイダーを使用してIAMロールを作成します。AWS IdentityおよびAccess ManagementユーザーガイドSAML 2.0 Federation(コンソール)のロールを作成するのステップに従ってください。。

ロールを設定するときは、次のパラメーターを使用するようにしてください。

パラメーター 説明およびサンプル値
SAML Provider(SAMLプロバイダー) 前提条件で作成したIDプロバイダーの名前(例:auth0SamlProvider)。**[Allow programmatic and AWS Management Console access(プログラムとAWSマネジメントコンソールによるアクセスを許可する)]**を選択します。

アクセス許可ポリシーを添付するよう求められたら、次 JSONを使用してポリシーを作成し、VirtualMachineAccessByCostCenterという名前を付けます。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeInstances"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:StartInstances",
                "ec2:StopInstances"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "ec2:ResourceTag/CostCenter": "<%= "${aws:PrincipalTag/CostCenter}" %>"
                }
            }
        }
    ]
}

Was this helpful?

/

ポリシーが作成されたら、ロールのポリシーリストを更新し、新しいポリシーをフィルタリングして選択します。

設定を確認するときは、次のパラメーターを必ず使用してください。

パラメーター 説明
Role name(ロール名) ロールの説明的な名前。たとえばAccessByCostCenter
Role description(ロールの説明) ロールを使用する目的の説明。

Auth0ルールを作成する

AWSロールとタグをユーザーにマッピングするには、Auth0でルールを作成する必要があります。これらの値は、トークン内のSAMLアサーションを通じて渡されます。例:

function(user, context, callback) {
  var awsAccount = '013823792818';
  var rolePrefix = `arn:aws:iam::` + awsAccount; 
  var samlIdP = rolePrefix + `:saml-provider/auth0SamlProvider`;

  user.awsRole = rolePrefix + `:role/AccessByCostCenter,` + samlIdP;
  user.awsRoleSession = user.email;
  user.awsTagKeys = ['CostCenter', 'Project'];
  user.CostCenter = 'marketing';
  user.Project = 'website';

  context.samlConfiguration.mappings = {
    'https://aws.amazon.com/SAML/Attributes/Role': 'awsRole',
    'https://aws.amazon.com/SAML/Attributes/RoleSessionName': 'awsRoleSession',
    'https://aws.amazon.com/SAML/Attributes/PrincipalTag:CostCenter': 'CostCenter',
    'https://aws.amazon.com/SAML/Attributes/PrincipalTag:Project': 'Project'
  };

  callback(null, user, context);
}

Was this helpful?

/

構成をテストする

これで、Auth0ユーザーを使用してAWSコンソールにログインし、実装をテストできるようになります。

ログインするには、AWSコンソールのSSOログインが必要です。これを見つけるには:

  1. [Dashboard]>[Applications(アプリケーション)]>[Applications(アプリケーション)]に移動し、アプリケーションの名前を選択して表示します。

  2. [Addons(アドオン)]タブで[SAML2 Web App(SAML2 Webアプリ)]アドオンを有効にします。

  3. [Usage(使用状況)]タブで、[Identity Provider Login URL(IDプロバイダーのログインURL)]を見つけます。

  4. 表示されたURLに移動します。

  5. サインインしたら、EC2からインスタンスを選択します。マーケティングCostCenterでタグ付けされたインスタンスの1つをクリックし、[Actions(アクション)] > [Instance State(インスタンス状態)] > [Stop(停止)]をクリックします。アクションが正常に完了したことを確認します。

  6. エンジニアリングCostCenterでタグ付けされたインスタンスをクリックし、[Actions(アクション)] > [Instance State(インスタンス状態)] > [Stop(停止)]をクリックします。アクションがエラーで失敗したことを確認します。

もっと詳しく