メインコンテンツへスキップ
Amazon Web Services (AWS) Session Tags を使用すると、リソースにタグを付け、ユーザーにキーと値のペアを割り当てることで、AWS API とリソースに対するロールベースのアクセス制御 (RBAC) を実装できます。 このガイドの例では、まず AWS Session Tags を使用して AWS リソースにタグを付け、次に、このロールと適切なタグを持つユーザーが AWS リソースに対して特定のアクションを実行できるようにする AWS IAM ロール用のポリシーを作成します。続いて、Auth0 で Rule を作成し、AWS IAM ロールと適切な AWS Session Tags を Auth0 ユーザーに付与して、それらをトークン内の アサーションに含めて渡します。この例は、Configure Amazon Web Services for Single Sign-On の例を基にしています。 AWS API とリソースで AWS Session Tags を使用するには、次の手順が必要です。
  1. AWS インスタンスにタグを付ける。
  2. 専用の AWS IAM ロールを作成する。
  3. Auth0 Rule を作成する。
  4. 設定をテストする。

前提条件

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

AWS リソースにタグを追加します。Amazon Elastic Compute Cloud: Tag your Amazon EC2 resources の手順に従ってください。 3 つのインスタンスを作成済みであることを確認してください。以下のタグを追加します。
インスタンスタグ
1キー: CostCenter、値: marketing
キー: Project、値: website
2キー: CostCenter、値: engineering
キー: Project、値: management_dashboard
3キー: CostCenter、値: marketing
キー: Project、値: community_site

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

前提条件で設定した AWS SAML を使用して、IAM ロールを作成します。AWS Identity and Access Management ユーザーガイド: SAML 2.0 フェデレーション用のロールの作成 (コンソール) の手順に従ってください。 ロールを設定する際は、必ず次のパラメーターを使用してください。
パラメーター説明と値の例
SAML Provider前提条件で作成した IDプロバイダーの名前 (auth0SamlProvider など) 。Allow programmatic and AWS Management Console access を選択します。
Attach permissions policies を求められたら、次の 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}" %>"
                }
            }
        }
    ]
}
ポリシーを作成したら、ロールのポリシー一覧を更新し、新しいポリシーを絞り込んで選択します。 設定を確認する際は、次のパラメーターを使用してください。
ParameterDescription
ロール名AccessByCostCenter のような、ロールの内容がわかる名前。
ロールの説明そのロールの用途を説明するテキスト。

Auth0 の Rule を作成する

AWS のロールとタグをユーザーにマッピングするには、Auth0 で Rule を作成する必要があります。これらの値は、その後トークン内の SAML アサーションを介して渡されます。次の例では:
awsAccount 変数の値は、ご自身のアカウント番号に置き換えてください。
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);
}

設定をテストする

これで、Auth0 ユーザーを使用して AWS コンソールにログインし、実装をテストできるはずです。 ログインするには、AWS コンソール用の ログインが必要です。確認するには、次の手順を実行します。
  1. Dashboard > Applications > Applications に移動し、表示するアプリケーションの名前を選択します。
  2. Addons タブで、SAML2 Web App アドオンを有効にします。
  3. Usage タブで、Identity Provider Login URL を確認します。
  4. 表示された URL に移動します。
  5. サインインしたら、EC2 から Instances を選択します。CostCentermarketing のインスタンスの1つをクリックし、Actions > Instance State > Stop をクリックします。アクションが正常に完了することを確認します。
  6. CostCenterengineering のインスタンスをクリックし、Actions > Instance State > Stop をクリックします。アクションがエラーで失敗することを確認します。

詳細情報