main.tf 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. data "yandex_iam_service_account" "sa" {
  2. service_account_id = var.service_account_id
  3. }
  4. //выдача прав на вызов функции
  5. resource "yandex_resourcemanager_folder_iam_binding" "invoker_bind" {
  6. folder_id = var.folder_id
  7. #role = "serverless.functions.admin"
  8. role = "serverless.functions.invoker"
  9. members = [
  10. "serviceAccount:${data.yandex_iam_service_account.sa.id}",
  11. ]
  12. }
  13. //выдача прав , если var.del_rule_on=True
  14. resource "yandex_resourcemanager_folder_iam_binding" "remediation_bind_1" {
  15. count = var.del_rule_on != "True" ? 0 : 1
  16. folder_id = var.folder_id
  17. #role = "serverless.functions.admin"
  18. role = "vpc.securityGroups.admin"
  19. members = [
  20. "serviceAccount:${data.yandex_iam_service_account.sa.id}",
  21. ]
  22. }
  23. //выдача прав , если var.del_perm_secret_on=True
  24. resource "yandex_resourcemanager_folder_iam_binding" "remediation_bind_2" {
  25. count = var.del_perm_secret_on != "True" ? 0 : 1
  26. folder_id = var.folder_id
  27. #role = "serverless.functions.admin"
  28. role = "lockbox.admin"
  29. members = [
  30. "serviceAccount:${data.yandex_iam_service_account.sa.id}",
  31. ]
  32. }
  33. //--------
  34. data "archive_file" "function" {
  35. type = "zip"
  36. source_dir = "${path.module}/function"
  37. output_path = "${path.module}/sync.zip"
  38. }
  39. resource "yandex_function" "function-for-trails" {
  40. folder_id = var.folder_id
  41. name = "function-for-trails"
  42. runtime = "python38"
  43. entrypoint = "main.handler"
  44. memory = "128"
  45. execution_timeout = "30"
  46. service_account_id = data.yandex_iam_service_account.sa.id
  47. environment = {
  48. BOT_TOKEN = var.bot_token
  49. CHAT_ID = var.chat_id_var
  50. EVENT_DICT = var.any_event_dict
  51. RULE_SG_ON = var.rule_sg_on
  52. RULE_BUCKET_ON = var.rule_bucket_on
  53. RULE_SECRET_ON = var.rule_secret_on
  54. DEL_RUL_ON = var.del_rule_on
  55. DEL_PERM_SECRET_ON = var.del_perm_secret_on
  56. }
  57. user_hash = data.archive_file.function.output_base64sha256
  58. content {
  59. zip_filename = data.archive_file.function.output_path
  60. }
  61. }
  62. /*Доделать когда появится триггер для cloudlogging в terraform
  63. resource "yandex_function_trigger" "logs-trigger" {
  64. name = "trails-log-trigger"
  65. folder_id = var.folder_id
  66. function {
  67. id = yandex_function.function-for-trails.id
  68. service_account_id = data.yandex_iam_service_account.sa.id
  69. }
  70. log_group {
  71. log_group_ids = [
  72. var.loggroup_id,
  73. ]
  74. batch_cutoff = 10
  75. batch_size = 5
  76. }
  77. }
  78. */