Amazon Web Services(AWS)セッションタグを使用すると、リソースにタグを付け、ユーザーにキーと値のペアを割り当てることができます。これにより、AWS APIとリソースにロールベースのアクセス制御(RBAC)を実装できます。
このガイドの例では、AWSリソースにAWSセッションタグをタグ付けし、AWS IAMロールのポリシーを作成します。これにより、このロールと適切なタグを持つユーザーがAWSリソースに対して特定のアクションを実行できるようになります。次に、Auth0でルールを作成し、AWS IAMロールと適切なAWSセッションタグをAuth0ユーザーに添付して、トークン内のSAML アサーションを通じて渡します。この例は、Amazon Web Servicesをシングルサインオン用に構成する で提示されている例に基づいています。
AWS APIとリソースでAWSセッションタグを使用するには、次の操作を行います。
AWSインスタンスにタグを付ける。
専用のAWS IAMロールを作成する。
Auth0ルールを作成する。
構成をテストする。
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 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 } " %>"
}
}
}
]
}
ポリシーが作成されたら、ロールのポリシーリストを更新し、新しいポリシーをフィルタリングして選択します。
設定を確認するときは、次のパラメーターを必ず使用してください。
パラメーター 説明 Role name(ロール名) ロールの説明的な名前。たとえばAccessByCostCenter。 Role description(ロールの説明) ロールを使用する目的の説明。
AWSロールとタグをユーザーにマッピングするには、Auth0でルールを作成する 必要があります。これらの値は、トークン内の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コンソールのSSO ログインが必要です。これを見つけるには:
[Dashboard]>[Applications(アプリケーション)]>[Applications(アプリケーション)] に移動し、アプリケーションの名前を選択して表示します。
[Addons(アドオン)] タブで [SAML2 Web App(SAML2 Webアプリ)] アドオンを有効にします。
[Usage(使用状況)] タブで、 [Identity Provider Login URL(IDプロバイダーのログインURL)] を見つけます。
表示されたURLに移動します。
サインインしたら、 EC2 から インスタンス を選択します。マーケティングのCostCenterでタグ付けされたインスタンスの1つをクリックし、 [Actions(アクション)] > [Instance State(インスタンス状態)] > [Stop(停止)] をクリックします。アクションが正常に完了したことを確認します。
エンジニアリングのCostCenterでタグ付けされたインスタンスをクリックし、 [Actions(アクション)] > [Instance State(インスタンス状態)] > [Stop(停止)] をクリックします。アクションがエラーで失敗したことを確認します。