Je ne souhaite pas que les utilisateurs d'Amazon Cognito aient un accès complet aux groupes d'utilisateurs lorsqu'ils utilisent les tableaux de bord OpenSearch.
Résolution
Domaine avec contrôle d'accès granulaire désactivé
Si vous n'avez pas activé le contrôle d'accès granulaire sur votre domaine OpenSearch, utilisez la ](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/ac.html#ac-types-resource)stratégie d'accès au domaine[ du cluster OpenSearch pour restreindre l'accès. Cette stratégie donne un accès en lecture seule à vos utilisateurs Cognito. Définissez l'autorisation ESHttpGet sur le rôle associé à la connexion Cognito.
Exemple de stratégie d'accès au domaine avec l'autorisation ESHttpGet :
{ "Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::account-id:role/Cognito_identity-pool-name Auth_Role"
},
"Action": "es:ESHttpGet",
"Resource": "arn:aws:es:region:account-id:domain/opensearch-domain-name/"
}
]
}
Remarque : remplacez account-id par l'ID de votre compte AWS et identity-pool-name par le nom du groupe d'identités Cognito. Remplacez également region par la région AWS et opensearch-domain-name par le nom de domaine OpenSearch.
Pour plus d'informations, consultez la section Configuration d'un domaine pour utiliser l'authentification Amazon Cognito.
Après avoir appliqué la stratégie, testez-la, puis envoyez une demande signée à votre domaine pour confirmer que vous ne pouvez effectuer que l'opération GET sur le domaine.
Cluster OpenSearch avec contrôle d'accès granulaire activé
Procédez comme suit :
-
Ouvrez la console Cognito.
-
Sélectionnez votre groupe d'utilisateurs, puis choisissez Créer un utilisateur.
-
Créez un utilisateur avec un nom tel que limited-user.
-
Créez un rôle Gestion des identités et des accès AWS (AWS IAM) pour limited-user, par exemple LimitedUserRole. En tant qu'utilisateur principal, utilisez le rôle IAM pour attribuer un accès limité à des utilisateurs spécifiques.
-
Associez la politique d’approbation suivante à LimitedUserRole :
{ "Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Federated": "cognito-identity.amazonaws.com"
},
"Action": "sts:AssumeRoleWithWebIdentity",
"Condition": {
"StringEquals": {
"cognito-identity.amazonaws.com :aud": "identity-pool-id"
},
"ForAnyValue:StringLike": {
"cognito-identity.amazonaws.com :amr": "authenticated"
}
}
}
]
}
Remarque : remplacez identity-pool-id par l’identifiant du groupe d'identités Cognito.
-
Associez la politique en ligne personnalisée suivante qui accorde des autorisations de lecture seule au domaine OpenSearch :
{ "Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowOpenSearchReadAccess",
"Effect": "Allow",
"Action": [
"es:ESHttpGet"
],
"Resource": "arn:aws:es:region:account-id:domain/"
}
]
}
Remarque : remplacez region par la région AWS et account-id par votre ID de compte AWS.
-
Créez un groupe avec un nom tel que limited-user-group, puis attribuez-lui le rôle IAM LimitedUserRole.
-
Choisissez limited-user-group, puis ajoutez limited-user et d'autres utilisateurs au groupe.
Associer un utilisateur limité à un rôle dans OpenSearch Dashboards
- Connectez-vous à OpenSearch Dashboards en tant qu'utilisateur principal.
- Choisissez Sécurité.
- Choisissez Rôles, puis sélectionnez votre rôle. Vous pouvez également créer un rôle. Pour en savoir plus, consultez la page Créer des rôles sur le site Web d'OpenSearch.
Remarque : vous pouvez également utiliser le rôle prédéfini readall_and_monitor ou readall. Pour plus d'informations, consultez la page Rôles prédéfinis sur le site Web d’OpenSearch.
- Associez le rôle à limited-user.
- Connectez-vous en tant que limited-user.
Remarque : vous ne pouvez pas effectuer d'opérations d'écriture sur les tableaux de bord OpenSearch.