@@ -84,6 +84,55 @@ data "aws_iam_policy_document" "elasticsearch-log-publishing-policy" {
84
84
}
85
85
}
86
86
87
+ data "aws_iam_policy_document" "cognito_es_policy" {
88
+ version = " 2012-10-17"
89
+ statement {
90
+ effect = " Allow"
91
+ actions = [
92
+ " cognito-idp:DescribeUserPool" ,
93
+ " cognito-idp:CreateUserPoolClient" ,
94
+ " cognito-idp:DeleteUserPoolClient" ,
95
+ " cognito-idp:DescribeUserPoolClient" ,
96
+ " cognito-idp:AdminInitiateAuth" ,
97
+ " cognito-idp:AdminUserGlobalSignOut" ,
98
+ " cognito-idp:ListUserPoolClients" ,
99
+ " cognito-identity:DescribeIdentityPool" ,
100
+ " cognito-identity:UpdateIdentityPool" ,
101
+ " cognito-identity:SetIdentityPoolRoles" ,
102
+ " cognito-identity:GetIdentityPoolRoles"
103
+ ]
104
+ resources = [
105
+ " *" ,
106
+ ]
107
+ }
108
+ }
109
+
110
+ data "aws_iam_policy_document" "es_assume_policy" {
111
+ version = " 2012-10-17"
112
+ statement {
113
+ effect = " Allow"
114
+ principals {
115
+ type = " Service"
116
+ identifiers = [" es.amazonaws.com" ]
117
+ }
118
+ actions = [" sts:AssumeRole" ]
119
+ }
120
+ }
121
+
122
+ module "cognito-role" {
123
+ source = " git::https://github.com/clouddrove/terraform-aws-iam-role.git?ref=tags/0.14.0"
124
+
125
+ name = format (" %s-cognito-role" ,module. labels . id )
126
+ environment = var. environment
127
+ label_order = [" name" ]
128
+ enabled = var. cognito_enabled
129
+
130
+ assume_role_policy = data. aws_iam_policy_document . es_assume_policy . json
131
+
132
+ policy_enabled = true
133
+ policy = data. aws_iam_policy_document . cognito_es_policy . json
134
+ }
135
+
87
136
# Module : Elasticsearch
88
137
# Description : Terraform module to create Elasticsearch resource on AWS.
89
138
resource "aws_elasticsearch_domain" "default" {
@@ -178,6 +227,13 @@ resource "aws_elasticsearch_domain" "default-public" {
178
227
kms_key_id = var. kms_key_id
179
228
}
180
229
230
+ cognito_options {
231
+ enabled = var. cognito_enabled
232
+ user_pool_id = var. user_pool_id
233
+ identity_pool_id = var. identity_pool_id
234
+ role_arn = module. cognito-role . arn
235
+ }
236
+
181
237
cluster_config {
182
238
instance_count = var. instance_count
183
239
instance_type = var. instance_type
@@ -248,6 +304,13 @@ resource "aws_elasticsearch_domain" "single" {
248
304
kms_key_id = var. kms_key_id
249
305
}
250
306
307
+ cognito_options {
308
+ enabled = var. cognito_enabled
309
+ user_pool_id = var. user_pool_id
310
+ identity_pool_id = var. identity_pool_id
311
+ role_arn = module. cognito-role . arn
312
+ }
313
+
251
314
cluster_config {
252
315
instance_count = var. instance_count
253
316
instance_type = var. instance_type
@@ -316,6 +379,13 @@ resource "aws_elasticsearch_domain" "single-public" {
316
379
kms_key_id = var. kms_key_id
317
380
}
318
381
382
+ cognito_options {
383
+ enabled = var. cognito_enabled
384
+ user_pool_id = var. user_pool_id
385
+ identity_pool_id = var. identity_pool_id
386
+ role_arn = module. cognito-role . arn
387
+ }
388
+
319
389
cluster_config {
320
390
instance_count = var. instance_count
321
391
instance_type = var. instance_type
@@ -367,6 +437,7 @@ data "aws_iam_policy_document" "default" {
367
437
368
438
statement {
369
439
actions = distinct (compact (var. iam_actions ))
440
+ effect = " Allow"
370
441
371
442
resources = [
372
443
var . zone_awareness_enabled ? (var. public_enabled ? join (" " , aws_elasticsearch_domain. default-public . * . arn ) : join (" " , aws_elasticsearch_domain. default . * . arn )) : (var. public_enabled ? join (" " , aws_elasticsearch_domain. single-public . * . arn ) : join (" " , aws_elasticsearch_domain. single . * . arn )),
@@ -377,6 +448,14 @@ data "aws_iam_policy_document" "default" {
377
448
type = " AWS"
378
449
identifiers = [" *" ]
379
450
}
451
+ condition {
452
+ test = " IpAddress"
453
+ variable = " aws:SourceIp"
454
+
455
+ values = [
456
+ " *"
457
+ ]
458
+ }
380
459
}
381
460
}
382
461
0 commit comments