Amazon EMR Studio で Git リポジトリに対してユーザーレベルのアクセス許可をサポートしました

2023.12.27

こんにちは、森田です。

以下のアップデートで Amazon EMR Studio で Git リポジトリに対してユーザーレベルのアクセス許可をサポートしました。

本記事では、Git リポジトリに対してユーザーレベルのアクセス許可の手順をご紹介いたします。

やってみる

前提条件

すでに Amazon EMR Studio, EMR Studio Workspace は作成済みとします。

また、Workspaceには、Gitリポジトリもリンク済みとします。

ユーザーレベルのアクセス許可を使用しない場合

EMRのサービスロール

ユーザーレベルのアクセスを制御するのは、EMR Studio サービス ロールで行います。

ユーザーレベルのアクセス許可を利用しない場合は、以下のようなポリシーとなります。

{
    "Sid": "AllowSecretsManagerReadOnlyActionsWithEMRTags", 
    "Effect": "Allow", 
    "Action": [ 
        "secretsmanager:GetSecretValue" 
     ], 
    "Resource": "arn:aws:secretsmanager:*:*:secret:*", 
    "Condition": {
        "StringEquals": {
            "aws:ResourceTag/for-use-with-amazon-emr-managed-policies": "true" 
        } 
    } 
}

Conditionを利用して、for-use-with-amazon-emr-managed-policiesのタグがtrueのシークレットに対してはアクセスができる状態になっております。

また、EMR Studioから作成したGit シークレットには、for-use-with-amazon-emr-managed-policiesのタグがtrueとして設定されます。

よって、以下のように他のユーザが作成したGitシークレットを使うことができてしまいます。

ユーザーレベルのアクセス許可

EMRのサービスロール

今回のアップデートにより、このGitシークレットを作成したユーザのみの利用を許可することができるようになります。

ユーザーレベルのアクセス許可を利用する場合は、以下のようなポリシーとなります。

{
   "Sid": "AllowSecretsManagerReadOnlyActionsWithEMRTags",
    "Effect": "Allow",
    "Action": "secretsmanager:GetSecretValue",
    "Resource": "arn:aws:secretsmanager:*:*:secret:*",
    "Condition": {
        "StringEquals": {
            "secretsmanager:ResourceTag/for-use-with-amazon-emr-managed-user-policies": "${aws:userid}"
        }
    }
}

こちらでは、先ほどのポリシーとは違い、シークレットのタグに自身のユーザIDが付与されたリソースのみアクセスができる状態になります。

よって、以下のように他のユーザが作成したGitシークレットは使うことができなくなります。

さいごに

今回のアップデートは、複数人で作業する際に嬉しい機能です。

各ユーザのシークレットを使うように強制ができるため、より細かくリポジトリ共有の制御ができるようになります。

既存で EMR Studio を使っている場合でも、手順を踏めば利用できるようになりますので、ぜひチェックしてみてください。

参考