Ana içeriğe geç

dtcloud_security_group_rule (Kaynak)

Bir güvenlik grubunun içindeki tek bir kuralı yönetir.

API'nin bir oluşturma ve bir silme uç noktası vardır, başka hiçbir şeyi yoktur; bu yüzden her argüman değişikliği yeni bir kural gerektirir. Platform zaten bunu yapar: eski kuralı siler, yenisini oluşturur. Kaynak kimliği <security-group-id>:<rule-id>'dir, çünkü bir kural, grubunun kuralları listelenerek okunur.

Örnek Kullanım​

# Tek bir adres aralığından SSH'ye izin verin.
resource "dtcloud_security_group_rule" "ssh_from_office" {
security_group_id = dtcloud_security_group.web.id
direction = "ingress"
protocol = "tcp"
port_range_min = 22
port_range_max = 22
remote_ip_prefix = "10.10.0.0/16"
}

# Başka bir gruptaki tüm makinelerden gelen trafiğe izin verin. Bir adres
# yerine bir gruba başvurmak, makineler eklenip çıkarıldıkça kuralı
# doğru tutar.
resource "dtcloud_security_group_rule" "app_from_web" {
security_group_id = dtcloud_security_group.app.id
direction = "ingress"
protocol = "tcp"
port_range_min = 8080
port_range_max = 8080
remote_group_id = dtcloud_security_group.web.id
}
not

remote_ip_prefix ve remote_group_id değerlerinin ikisini de yazmazsanız kural tüm adres ailesine uygulanır: IPv4 için 0.0.0.0/0, IPv6 için ::/0.

Şema​

Zorunlu​

  • direction (String) Trafik yönü: ingress (gelen) ya da egress (giden). Bu değiştirilirse yeni bir kaynak oluşturulur.
  • security_group_id (String) Bu kuralın ait olduğu güvenlik grubunun kimliği. Bu değiştirilirse yeni bir kaynak oluşturulur.

İsteğe Bağlı​

  • ethertype (String) Adres ailesi: IPv4 ya da IPv6. Varsayılan olarak platformun seçtiği değerdir, yani IPv4. Bu değiştirilirse yeni bir kaynak oluşturulur.
  • port_range_max (Number) Aralıktaki son bağlantı noktası. icmp için bu bir bağlantı noktası değil, ICMP kodudur. Tüm bağlantı noktaları için yazmayın. Bu değiştirilirse yeni bir kaynak oluşturulur.
  • port_range_min (Number) Aralıktaki ilk bağlantı noktası. icmp için bu bir bağlantı noktası değil, ICMP tipidir. Tüm bağlantı noktaları için yazmayın. Aşağıdaki 0 notuna bakın. Bu değiştirilirse yeni bir kaynak oluşturulur.
  • protocol (String) Kuralın eşleştiği protokol, örn. tcp, udp, icmp ya da bir protokol numarası. Tüm protokollerle eşleşmek için yazmayın. Platform yaygın adlardan fazlasını kabul ettiği için sabit bir listeyle sınırlı değildir. Bu değiştirilirse yeni bir kaynak oluşturulur.
  • remote_group_id (String) Kuralın üyelerine uygulandığı başka bir güvenlik grubunun kimliği. Ad değil kimlik: platform burada adları çözmez. remote_ip_prefix ile birlikte kullanılamaz. Bu değiştirilirse yeni bir kaynak oluşturulur.
  • remote_ip_prefix (String) Kuralın uygulandığı CIDR, örn. 10.0.0.0/24. remote_group_id ile birlikte kullanılamaz. Bu değiştirilirse yeni bir kaynak oluşturulur.
  • timeouts (Block, Optional) (bkz. aşağıdaki iç içe şema)

Salt Okunur​

  • description (String) Kuralın açıklaması. Salt okunur: oluşturma yolu açıklama kabul etmez, bu yüzden yalnızca Terraform dışında oluşturulmuş bir kuralda dolu olur.
  • id (String) Bu kaynağın kimliği.
  • normalized_cidr (String) Ana bilgisayar bitleri temizlenmiş remote_ip_prefix, platformun hesapladığı haliyle: 10.0.0.5/24 burada 10.0.0.0/24 olarak bildirilir.

timeouts için iç içe şema​

İsteğe Bağlı:

  • create (String)
  • delete (String)

Bilinmesi Gerekenler​

  • Plan aşamasında reddedilenler. Protokolü olmayan bir bağlantı noktası aralığı, tcp ve udp için port_range_max'tan büyük bir port_range_min ve adres ailesi ethertype ile uyuşmayan bir remote_ip_prefix. Yinelenen bir kural bunlardan biri değildir: aynısının zaten var olup olmadığı ancak apply sırasında bilinir ve orada platformun reddi aktarılır.
  • ICMP, bağlantı noktası alanlarını tip ve kod için kullanır. protocol = "icmp" için port_range_min ICMP tipi, port_range_max ise koddur. Bir aralık olmadıkları için sıralama kontrolü uygulanmaz.
  • 0 ile "ayarlanmamış" aynı değerdir. Sıfır olan bir bağlantı noktası istekten çıkarılır ve platform ayarlanmamış bir bağlantı noktasını boş bildirir; bu da 0 olarak geri okunur. Pratikte bu yalnızca ICMP tip 0'ın (echo reply) ifade edilememesi demektir.
  • protocol büyük/küçük harfi yok sayar. Gönderilmeden ve saklanmadan önce küçük harfe çevrilir, bu yüzden TCP ile tcp asla değişiklik olarak görünmez.
  • Grubu silmek kurallarını da götürür. Grubu silinmiş bir kural hata vermek yerine state'ten düşer, çünkü platform silinmiş bir grubun kural listesine boş bir listeyle yanıt verir.

Zaman Aşımları​

create ve delete için varsayılan süre 5 dakikadır; her değişiklik kuralı yeniden oluşturduğu için update yoktur. Bu çağrılar eşzamanlıdır, bu yüzden zaman aşımları takılı kalmış bir isteği sınırlar. Bunları bir timeouts bloğuyla değiştirin:

resource "dtcloud_security_group_rule" "ssh_from_office" {
# ...

timeouts {
create = "10m"
}
}

İçe Aktarma​

# Bir kural, grubu listelenerek bulunur; bu yüzden içe aktarma kimliği iki
# kimliği de taşır: <security-group-id>:<rule-id>
terraform import dtcloud_security_group_rule.ssh_from_office 7f9c1e40-1c3d-4b6a-9a2f-5f1c9d0e3b11:2b8d5a71-90ce-4f2a-8d13-6c0b4e7a1f22

Kural kimlikleri, hem kaynakta hem de dtcloud_security_group veri kaynağında, grubun inbound_rule ve outbound_rule özniteliklerindedir. Her şey geri okunur.